home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / termv4.6 / extras / source / term-source.lha / Data.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-18  |  87.6 KB  |  2,572 lines

  1. /*
  2. **    Data.c
  3. **
  4. **    Global data structures.
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifndef _GLOBAL_H
  11. #include "Global.h"
  12. #endif
  13.  
  14. BOOLEAN             DebugFlag;
  15.  
  16.     /* Libraries. */
  17.  
  18. struct ExecBase        *SysBase;
  19. struct DosLibrary    *DOSBase;
  20. struct Library        *GTLayoutBase;
  21.  
  22. struct IntuitionBase    *IntuitionBase;
  23. struct GfxBase        *GfxBase;
  24. struct RxsLib        *RexxSysBase;
  25. struct LocaleBase    *LocaleBase;
  26. struct Library        *GadToolsBase,
  27.             *TimerBase,
  28.             *ConsoleDevice,
  29.             *DiskfontBase,
  30.             *UtilityBase,
  31.             *AslBase,
  32.             *IFFParseBase,
  33.             *CxBase,
  34.             *IconBase,
  35.             *LayersBase,
  36.             *TranslatorBase,
  37.             *WorkbenchBase,
  38.             *AmigaGuideBase,
  39.             *XEmulatorBase,
  40.             *XProtocolBase,
  41.             *DataTypesBase,
  42.             *OwnDevUnitBase;
  43.  
  44. BOOLEAN             Kick30;
  45.  
  46.     /* Timer device. */
  47.  
  48. struct timerequest    *TimeRequest;
  49. struct MsgPort        *TimePort;
  50.  
  51.     /* Console device. */
  52.  
  53. struct IOStdReq        *ConsoleRequest;
  54. struct KeyMap        *KeyMap;
  55. BPTR             KeySegment;
  56.  
  57.     /* Screen & Windows. */
  58.  
  59. struct Screen        *Screen,
  60.             *SharedScreen;
  61. struct Window        *Window;
  62. ULONG             OpenWindowTag;
  63. LONG             WindowWidth,
  64.              WindowHeight,
  65.              WindowLeft,
  66.              WindowTop;
  67. struct Window        *StatusWindow;
  68. UWORD             StatusOffset;
  69. struct RastPort         StatusRastPort,
  70.             *StatusRPort;
  71. UWORD             StatusDisplayLeft,
  72.              StatusDisplayTop,
  73.              StatusDisplayWidth,
  74.              StatusDisplayHeight;
  75. APTR             OldWindowPtr;
  76. UBYTE             ScreenTitle[80];
  77. UBYTE             WindowTitle[80];
  78. UBYTE             DepthMask;
  79. LONG             RenderPens[4],
  80.              MappedPens[2][32],
  81.              SafeTextPen;
  82. struct DrawInfo        *DrawInfo;
  83. UWORD            *Pens;
  84. LONG             ScreenWidth,
  85.              ScreenHeight;
  86. BOOLEAN             UseMasking;
  87. struct IBox         WindowBox = { -1,-1,-1,-1 };
  88.  
  89. struct BlockMarker    *WindowMarker;
  90. ULONG             ClickSecs,ClickMicros;
  91. BOOLEAN             FirstClick = TRUE,HoldClick;
  92. LONG             ClickX,ClickY;
  93.  
  94.     /* Workbench AppWindow support. */
  95.  
  96. struct AppWindow    *WorkbenchWindow;
  97. struct MsgPort        *WorkbenchPort;
  98.  
  99.     /* Graphics rendering. */
  100.  
  101. struct ViewPort        *VPort;
  102. struct RastPort        *RPort;
  103. struct Region        *ClipRegion,
  104.             *OldRegion;
  105. struct TextFont        *GFX,
  106.             *CurrentFont,
  107.             *UserTextFont;
  108. WORD             UserFontHeight,
  109.              UserFontWidth,
  110.              UserFontBase;
  111. UBYTE             UserFontName[40];
  112. struct TextFont        *TextFont;
  113. WORD             TextFontHeight,
  114.              TextFontWidth,
  115.              TextFontBase;
  116. struct TTextAttr     TextAttr;
  117. UBYTE             TextFontName[40];
  118. struct TTextAttr     UserFont;
  119. struct TagItem         TagDPI[2];
  120. APTR             VisualInfo;
  121. UWORD             FontRightExtend;
  122.  
  123. ULONG            (* ReadAPen)(struct RastPort *RPort);
  124. ULONG            (* ReadBPen)(struct RastPort *RPort);
  125. ULONG            (* ReadDrMd)(struct RastPort *RPort);
  126. ULONG            (* SetMask)(struct RastPort *RPort,ULONG Mask);
  127.  
  128. UWORD MonoPens[] =
  129. {
  130.     0,1,1,1,1,1,0,0,1,    0,1,1,(UWORD)~0
  131. };
  132.  
  133. UWORD StandardPens[] =
  134. {
  135.     0,1,1,2,1,3,1,0,2,    1,2,1,(UWORD)~0
  136. };
  137.  
  138. UWORD ANSIPens[] =
  139. {
  140.     0,4,7,7,4,6,7,0,6,    0,7,0,(UWORD)~0
  141. };
  142.  
  143. UWORD EGAPens[] =
  144. {
  145.     0,15,15,15,8,7,15,0,7,    0,15,0,(UWORD)~0
  146. };
  147.  
  148. UWORD NewEGAPens[] =
  149. {
  150.     7,0,0,15,0,6,0,7,15,    0,15,0,(UWORD)~0
  151. };
  152.  
  153. UWORD AtomicColours[16] =
  154. {
  155.     0x000,
  156.     0xDDD,
  157.     0x000,
  158.     0x000,
  159.     0x000,
  160.     0x000,
  161.     0x000,
  162.     0x000,
  163.     0x000,
  164.     0x000,
  165.     0x000,
  166.     0x000,
  167.     0x000,
  168.     0x000,
  169.     0x000,
  170.     0x000
  171. };
  172.  
  173. UWORD EGAColours[16] =
  174. {
  175.     0x000,    /* Black. */
  176.     0xA00,    /* Dark red. */
  177.     0x0A0,    /* Dark green. */
  178.     0xA60,    /* Dark yellow (orange). */
  179.     0x00A,    /* Dark blue. */
  180.     0xA0A,    /* Dark magenta.*/
  181.     0x0AA,    /* Dark cyan. */
  182.     0xBBB,    /* Light grey. */
  183.     0x666,    /* Dark grey. */
  184.     0xF00,    /* Red. */
  185.     0x0F0,    /* Green. */
  186.     0xFF0,    /* Yellow. */
  187.     0x00F,    /* Blue. */
  188.     0xF0F,    /* Magenta. */
  189.     0x0FF,    /* Cyan. */
  190.     0xFFF    /* White. */
  191. };
  192.  
  193. UWORD ANSIColours[16] =
  194. {
  195.     0x000,    /* Black. */
  196.     0xF00,    /* Red. */
  197.     0x0F0,    /* Green. */
  198.     0xFF0,    /* Yellow. */
  199.     0x00F,    /* Blue. */
  200.     0xF0F,    /* Magenta. */
  201.     0x0FF,    /* Cyan. */
  202.     0xFFF,    /* White. */
  203.  
  204.     0x000,    /* Black. */
  205.     0xF00,    /* Red. */
  206.     0x0F0,    /* Green. */
  207.     0xFF0,    /* Yellow. */
  208.     0x00F,    /* Blue. */
  209.     0xF0F,    /* Magenta. */
  210.     0x0FF,    /* Cyan. */
  211.     0xFFF    /* White. */
  212. };
  213.  
  214. UWORD             DefaultColours[32],
  215.              BlinkColours[32],
  216.              NormalColours[32],
  217.              StandardColours[32],
  218.              PaletteSize = 16;
  219.  
  220.     /* Line/Column offset tables. */
  221.  
  222. LONG            *OffsetXTable,
  223.             *OffsetYTable;
  224.  
  225.     /* DOS data. */
  226.  
  227. struct Process        *ThisProcess;
  228. struct Process        *StatusProcess;
  229. struct Process        *RexxProcess;
  230. struct MsgPort        *TermRexxPort;
  231. struct WBStartup    *WBenchMsg;
  232. BPTR             WBenchLock;
  233. struct TermPort        *TermPort;
  234. BYTE             CheckBit    = -1,
  235.              OwnDevBit    = -1;
  236. BOOLEAN             InRexx;
  237. WORD             LimitCount    = -1;
  238. UBYTE             LimitMacro[MAX_FILENAME_LENGTH];
  239. LONG             CantQuit;
  240.  
  241.     /* Character conversion. */
  242.  
  243. struct InputEvent    *FakeInputEvent;
  244.  
  245.     /* Serial I/O. */
  246.  
  247. struct IOExtSer        *ReadRequest;
  248. struct IOExtSer        *WriteRequest;
  249. struct MsgPort        *ReadPort;
  250. UBYTE            *ReadBuffer,
  251.             *HostReadBuffer;
  252. UBYTE            *SerialMessage;
  253. ULONG             DTERate,
  254.              SerialBufferSize;
  255. BOOLEAN             ProcessIO = TRUE;
  256. BOOLEAN             FirstInvocation;
  257. BOOLEAN             UseRTS_CTS;
  258.  
  259. UBYTE             NewDevice[MAX_FILENAME_LENGTH];
  260. LONG             NewUnit;
  261. BOOLEAN             UseNewDevice,
  262.              UseNewUnit;
  263.  
  264. LONG BaudRates[] =
  265. {
  266.     110,    300,    600,    1200,    2400,    4800,    7200,
  267.     9600,    12000,    14400,    19200,    31250,    38400,    57600,
  268.     64000,    76800,    115200,    230400,    345600,    460800,    576000,
  269.     614400,    691200,    806400,    921600
  270. };
  271.  
  272. WORD NumBaudRates = NumElements(BaudRates);
  273.  
  274. struct RendezvousSemaphore    RendezvousSemaphore;
  275.  
  276.     /* Localization support. */
  277.  
  278. struct Catalog    *Catalog;
  279. struct Locale    *Locale;
  280. UBYTE         DecimalPoint;
  281.  
  282.     /* Hotkeys. */
  283.  
  284. struct Hotkeys Hotkeys;
  285.  
  286.     /* Static default fonts. */
  287.  
  288. struct TextAttr DefaultFont =
  289. {
  290.     (UBYTE *)"topaz.font",
  291.     8,
  292.     FS_NORMAL,
  293.     FPF_ROMFONT | FPF_DESIGNED
  294. };
  295.  
  296. struct TextAttr GFXFont =
  297. {
  298.     (UBYTE *)"GFX.font",
  299.     8,
  300.     FS_NORMAL,
  301.     FPF_DISKFONT
  302. };
  303.  
  304.     /* Character lookup tables. */
  305.  
  306. BYTE IsPrintable[256] =
  307. {
  308.     0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,
  309.     0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,
  310.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  311.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  312.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  313.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  314.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  315.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
  316.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  317.     0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
  318.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  319.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  320.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  321.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  322.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  323.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  324. };
  325.  
  326. BYTE IsGlyph[256] =
  327. {
  328.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  329.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  330.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  331.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  332.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  333.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  334.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  335.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
  336.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  337.     0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
  338.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  339.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  340.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  341.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  342.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  343.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  344. };
  345.  
  346. BYTE CharType[256] =
  347. {
  348.     0,0,0,0,0,0,0,0,0,0,6,0,0,7,0,0,
  349.     0,5,0,4,0,0,0,0,0,0,0,0,0,0,0,0,
  350.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  351.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  352.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  353.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  354.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  355.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  356.     2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
  357.     0,0,0,0,0,3,1,1,1,1,0,0,0,0,0,0,
  358.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  359.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  360.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  361.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  362.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  363.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  364. };
  365.  
  366.     /* ISO -> IBM font conversion. */
  367.  
  368. UBYTE IBMConversion[256] =
  369. {
  370.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,
  371.     0x00,0x11,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,
  372.     0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
  373.     0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
  374.     0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
  375.     0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
  376.     0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
  377.     0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
  378.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  379.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  380.     0x00,0xAD,0x9B,0x9C,0x00,0x9D,0x00,0x15,0x00,0x00,0xA6,0x00,0x00,0x00,0xAE,0x00,
  381.     0xF8,0xF1,0xFD,0x00,0x00,0xE6,0x14,0xF9,0x00,0x00,0xA7,0xAF,0xAC,0xAB,0x00,0xA8,
  382.     0x00,0x00,0x00,0x00,0x8E,0x8F,0x92,0x80,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,
  383.     0x00,0xA5,0x00,0x00,0x00,0x00,0x99,0x00,0x00,0x00,0x00,0x00,0x9A,0x00,0x00,0xE1,
  384.     0x85,0xA0,0x83,0x00,0x84,0x86,0x91,0x87,0x8A,0x82,0x88,0x89,0x8D,0xA1,0x8C,0x00,
  385.     0x00,0xA4,0x95,0xA2,0x93,0x00,0x94,0x00,0x00,0x97,0xA3,0x96,0x81,0x00,0x00,0x98
  386. };
  387.  
  388.     /* IBM -> ISO font conversion. */
  389.  
  390. UBYTE ISOConversion[256] =
  391. {
  392.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x00,0x00,
  393.     0x00,0x11,0x00,0x13,0xB6,0xA7,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,
  394.     0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
  395.     0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
  396.     0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
  397.     0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
  398.     0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
  399.     0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
  400.     0xC7,0xFC,0xE9,0xE2,0xE4,0xE0,0xE5,0xE7,0xEA,0xEB,0xE8,0x00,0xEE,0xEC,0xC4,0xC5,
  401.     0xC9,0xE6,0xC6,0xF4,0xF6,0xF2,0xFB,0xF9,0xFF,0xD6,0xDC,0xA2,0xA3,0xA5,0x00,0x00,
  402.     0xE1,0xED,0xF3,0xFA,0xF1,0xD1,0xAA,0xBA,0xBF,0x00,0x00,0xBD,0xBC,0xA1,0xAE,0xBB,
  403.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  404.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  405.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  406.     0x00,0xDF,0x00,0x00,0x00,0x00,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  407.     0x00,0xB1,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xB7,0x00,0x00,0x00,0xB2,0x00,0x00
  408. };
  409.  
  410.     /* Table of graphics characters. */
  411.  
  412. BYTE GfxTable[256] =
  413. {
  414.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  415.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  416.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  417.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  418.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  419.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  420.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  421.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  422.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  423.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  424.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  425.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  426.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  427.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  428.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  429.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  430. };
  431.  
  432.     /* Special character treatment. */
  433.  
  434. struct SpecialKey SpecialKeys[13] =
  435. {
  436.     BEL,    (JUMP)DoBeep,        /* Ring the bell. */
  437.     XON,    (JUMP)DoxON,        /* Flow control - stop output. */
  438.     BKS,    (JUMP)DoBackspace,    /* Erase a character. */
  439.     ENT,    (JUMP)DoLF_FF_VT,    /* Enter key. */
  440.     FFD,    (JUMP)DoFF,        /* Form feed. */
  441.     VTB,    (JUMP)DoLF_FF_VT,    /* Vertical tab (huh?). */
  442.     RET,    (JUMP)DoCR,        /* Return key. */
  443.     TAB,    (JUMP)DoTab,        /* Move to next tab stop. */
  444.     SI,    (JUMP)DoShiftIn,    /* Change to graphics mode */
  445.     SO,    (JUMP)DoShiftOut,    /* Change out of graphics mode. */
  446.     ENQ,    (JUMP)DoEnq,        /* Transmit answerback message. */
  447.     ESC,    (JUMP)DoEsc,        /* Start new control sequence. */
  448.     CSI,    (JUMP)DoCsi        /* Start new control sequence. */
  449. };
  450.  
  451. JUMP *SpecialTable;
  452.  
  453. BYTE AbortMap[256] =
  454. {
  455.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  456.     0,0,0,0,0,0,0,0,1,0,1,2,0,0,0,0,
  457.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  458.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  459.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  460.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  461.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  462.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  463.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  464.     0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,
  465.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  466.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  467.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  468.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  469.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  470.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  471. };
  472.  
  473. JUMP *AbortTable;
  474.  
  475. VOID (* ConDump)(STRPTR,LONG);
  476. VOID (* ConOutput)(STRPTR,LONG);
  477. VOID (* ConProcessData)(register STRPTR,register LONG);
  478.  
  479.     /* Shared global string formatting buffer. */
  480.  
  481. UBYTE SharedBuffer[512];
  482.  
  483.     /* Some more handy buffers. */
  484.  
  485. UBYTE ARexxCommandBuffer[256],AmigaDOSCommandBuffer[256],DialNumberBuffer[256];
  486.  
  487.     /* Screen pull-down-menu. */
  488.  
  489. struct NewMenu TermMenu[] =
  490. {
  491.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  492.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)0},
  493.     {   NM_SUB, NULL,         0 , 0,        0, (APTR)MEN_SAVE_AS_PICTURE},
  494.     {   NM_SUB, NULL,         0 , 0,        0, (APTR)MEN_SAVE_AS_TEXT},
  495.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  496.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)0},
  497.     {   NM_SUB, NULL,         0 , 0,        0, (APTR)MEN_PRINT_SCREEN},
  498.     {   NM_SUB, NULL,         0 , 0,        0, (APTR)MEN_PRINT_SCREEN_AS_GFX},
  499.     {   NM_SUB, NULL,         0 , 0,        0, (APTR)MEN_PRINT_CLIP},
  500.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  501.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)0},
  502.     {   NM_SUB, NULL,         0 , TICK,    0, (APTR)MEN_CAPTURE_TO_FILE},
  503.     {   NM_SUB, NULL,         0 , TICK,    0, (APTR)MEN_CAPTURE_TO_RAW_FILE},
  504.     {   NM_SUB, NULL,         0 , TICK,    0, (APTR)MEN_CAPTURE_TO_PRINTER},
  505.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  506.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_ICONIFY},
  507.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  508.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_ABOUT},
  509.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  510.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_QUIT},
  511.  
  512.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  513.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_COPY},
  514.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_PASTE},
  515.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CLEAR},
  516.  
  517.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  518.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_EXECUTE_DOS_COMMAND},
  519.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_EXECUTE_REXX_COMMAND},
  520.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  521.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_RECORD},
  522.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_RECORD_LINE},
  523.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  524.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_EDIT_TRAPS},
  525.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_DISABLE_TRAPS},
  526.  
  527.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  528.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_PHONEBOOK},
  529.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_REDIAL},
  530.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_DIAL_NUMBER},
  531.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  532.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SEND_BREAK},
  533.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_HANG_UP},
  534.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  535.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_WAIT},
  536.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  537.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_FLUSH_BUFFER},
  538.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_RELEASE_DEVICE},
  539.  
  540.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  541.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_UPLOAD_ASCII},
  542.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_DOWNLOAD_ASCII},
  543.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  544.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_UPLOAD_TEXT},
  545.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_DOWNLOAD_TEXT},
  546.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_EDIT_AND_UPLOAD_TEXT},
  547.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  548.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_UPLOAD_BINARY},
  549.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_DOWNLOAD_BINARY},
  550.  
  551.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  552.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CLEAR_BUFFER},
  553.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_DISPLAY_BUFFER},
  554.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CLOSE_BUFFER},
  555.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  556.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_FREEZE_BUFFER},
  557.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  558.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_OPEN_BUFFER},
  559.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SAVE_BUFFER_AS},
  560.  
  561.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  562.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CLEAR_SCREEN},
  563.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_RESET_FONT},
  564.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_RESET_STYLES},
  565.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_RESET_TERMINAL},
  566.  
  567.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  568.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SERIAL},
  569.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_MODEM},
  570.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SCREEN},
  571.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_TERMINAL},
  572.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SET_EMULATION},
  573.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CLIPBOARD},
  574.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CAPTURE},
  575.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_COMMANDS},
  576.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_MISC},
  577.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_PATH},
  578.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_TRANSFER_PROTOCOL},
  579.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  580.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_TRANSFER},
  581.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_TRANSLATION},
  582.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_MACROS},
  583.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_CURSORKEYS},
  584.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_FAST_MACROS},
  585.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_HOTKEYS},
  586.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SPEECH},
  587.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SOUND},
  588.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_RATES},
  589.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SET_CONSOLE},
  590.     {  NM_ITEM, NM_BARLABEL,     0 , 0,        0, (APTR)0},
  591.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_OPEN_SETTINGS},
  592.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SAVE_SETTINGS},
  593.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_SAVE_SETTINGS_AS},
  594.  
  595.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)0},
  596.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_STATUS_WINDOW},
  597.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_REVIEW_WINDOW},
  598.     {  NM_ITEM, NULL,         0 , CHECKIT,    0, (APTR)MEN_PACKET_WINDOW},
  599.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_CHAT_LINE},
  600.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_FAST_MACROS_WINDOW},
  601.     {  NM_ITEM, NULL,         0 , TICK,    0, (APTR)MEN_MATRIX_WINDOW},
  602.     {  NM_ITEM, NULL,         0 , 0,        0, (APTR)MEN_UPLOAD_QUEUE_WINDOW},
  603.  
  604.     { NM_TITLE, NULL,         0 , 0,        0, (APTR)MEN_EXTRA_DIAL},
  605.     {   NM_END, 0,             0 , 0,        0, (APTR)0}
  606. };
  607.  
  608. WORD NumMenuEntries = NumElements(TermMenu);
  609.  
  610. struct Menu    *Menu;
  611. struct Image    *AmigaGlyph,
  612.         *CheckGlyph;
  613.  
  614. LONG MenuLabels[] =
  615. {
  616.     MSG_TERMDATA_PROJECT_MEN,
  617.     MSG_TERMDATA_SAVE_SCREEN_AS_MEN,
  618.     MSG_TERMDATA_SAVE_AS_PICTURE_MEN,
  619.     MSG_TERMDATA_SAVE_AS_TEXT_MEN,
  620.     MSG_TERMDATA_PRINT_MEN,
  621.     MSG_TERMDATA_PRINT_SCREEN_MEN,
  622.     MSG_TERMDATA_PRINT_SCREEN_GFX_MEN,
  623.     MSG_TERMDATA_PRINT_CLIP_MEN,
  624.     MSG_TERMDATA_CAPTURE_MEN,
  625.     MSG_TERMDATA_CAPTURE_TO_FILE_MEN,
  626.     MSG_TERMDATA_CAPTURE_TO_RAW_FILE_MEN,
  627.     MSG_TERMDATA_CAPTURE_TO_PRINTER_MEN,
  628.     MSG_TERMDATA_ICONIFY_MEN,
  629.     MSG_TERMDATA_ABOUT_MEN,
  630.     MSG_TERMDATA_QUIT_MEN,
  631.  
  632.     MSG_TERMDATA_EDIT_MEN,
  633.     MSG_TERMDATA_COPY_MEN,
  634.     MSG_TERMDATA_PASTE_MEN,
  635.     MSG_TERMDATA_CLEAR_MEN,
  636.  
  637.     MSG_TERMDATA_COMMANDS_MEN,
  638.     MSG_TERMDATA_EXECUTE_DOS_COMMAND_MEN,
  639.     MSG_TERMDATA_EXECUTE_REXX_COMMAND_MEN,
  640.     MSG_TERMDATA_RECORD_MEN,
  641.     MSG_TERMDATA_RECORD_LINE_MEN,
  642.     MSG_TERMDATA_EDIT_TRAPS_MEN,
  643.     MSG_TERMDATA_DISABLE_TRAPS_MEN,
  644.  
  645.     MSG_TERMDATA_PHONE_MEN,
  646.     MSG_TERMDATA_PHONEBOOK_MEN,
  647.     MSG_TERMDATA_REDIAL_MEN,
  648.     MSG_TERMDATA_DIAL_NUMBER_MEN,
  649.     MSG_TERMDATA_SEND_BREAK_MEN,
  650.     MSG_TERMDATA_HANG_UP_MEN,
  651.     MSG_TERMDATA_WAIT_MEN,
  652.     MSG_TERMDATA_FLUSH_BUFFER_MEN,
  653.     MSG_TERMDATA_RELEASE_DEVICE_MEN,
  654.  
  655.     MSG_TERMDATA_XFER_MEN,
  656.     MSG_TERMDATA_UPLOAD_ASCII_MEN,
  657.     MSG_TERMDATA_DOWNLOAD_ASCII_MEN,
  658.     MSG_TERMDATA_UPLOAD_TEXT_MEN,
  659.     MSG_TERMDATA_DOWNLOAD_TEXT_MEN,
  660.     MSG_TERMDATA_EDIT_AND_UPLOAD_TEXT_MEN,
  661.     MSG_TERMDATA_UPLOAD_BINARY_MEN,
  662.     MSG_TERMDATA_DOWNLOAD_BINARY_MEN,
  663.  
  664.     MSG_TERMDATA_BUFFER_MEN,
  665.     MSG_TERMDATA_CLEAR_BUFFER_MEN,
  666.     MSG_TERMDATA_DISPLAY_BUFFER_MEN,
  667.     MSG_TERMDATA_CLOSE_BUFFER_MEN,
  668.     MSG_TERMDATA_FREEZE_BUFFER_MEN,
  669.     MSG_TERMDATA_OPEN_BUFFER_MEN,
  670.     MSG_TERMDATA_SAVE_BUFFER_AS_MEN,
  671.  
  672.     MSG_TERMDATA_SCREEN_MEN,
  673.     MSG_TERMDATA_CLEAR_SCREEN_MEN,
  674.     MSG_TERMDATA_RESET_FONT_MEN,
  675.     MSG_TERMDATA_RESET_STYLES_MEN,
  676.     MSG_TERMDATA_RESET_TERMINAL_MEN,
  677.  
  678.     MSG_TERMDATA_SETTINGS_MEN,
  679.     MSG_TERMDATA_SERIAL_MEN,
  680.     MSG_TERMDATA_MODEM_MEN,
  681.     MSG_TERMDATA_SCREEN_PREFS_MEN,
  682.     MSG_TERMDATA_TERMINAL_MEN,
  683.     MSG_TERMDATA_SET_EMULATION_MEN,
  684.     MSG_TERMDATA_CLIPBOARD_PREFS_MEN,
  685.     MSG_TERMDATA_CAPTURE_PREFS_MEN,
  686.     MSG_TERMDATA_COMMANDS_PREFS_MEN,
  687.     MSG_TERMDATA_MISC_MEN,
  688.     MSG_TERMDATA_PATH_MEN,
  689.     MSG_TERMDATA_TRANSFER_PROTOCOL_MEN,
  690.     MSG_TERMDATA_TRANSFER_MEN,
  691.     MSG_TERMDATA_TRANSLATION_MEN,
  692.     MSG_TERMDATA_MACROS_MEN,
  693.     MSG_TERMDATA_CURSORKEYS_MEN,
  694.     MSG_TERMDATA_FAST_MACROS_MEN,
  695.     MSG_TERMDATA_HOTKEYS_MEN,
  696.     MSG_TERMDATA_SPEECH_MEN,
  697.     MSG_TERMDATA_SOUND_MEN,
  698.     MSG_AREACODES_MEN,
  699.     MSG_TERMDATA_SET_CONSOLE_MEN,
  700.     MSG_TERMDATA_OPEN_SETTINGS_MEN,
  701.     MSG_TERMDATA_SAVE_SETTINGS_MEN,
  702.     MSG_TERMDATA_SAVE_SETTINGS_AS_MEN,
  703.  
  704.     MSG_TERMDATA_WINDOWS_MEN,
  705.     MSG_TERMDATA_STATUS_WINDOW_MEN,
  706.     MSG_TERMDATA_REVIEW_WINDOW_MEN,
  707.     MSG_TERMDATA_PACKET_WINDOW_MEN,
  708.     MSG_TERMDATA_CHAT_LINE_MEN,
  709.     MSG_TERMDATA_FAST_MACROS_WINDOW_MEN,
  710.     MSG_TERMDATA_MATRIX_WINDOW_MEN,
  711.     MSG_TERMDATA_UPLOAD_QUEUE_WINDOW_MEN,
  712.  
  713.     MSG_TERMDATA_DIALING_MEN
  714. };
  715.  
  716.     /* Cross-hatch pattern. */
  717.  
  718. ULONG Crosshatch = 0x5555AAAA;
  719.  
  720.     /* Configuration. */
  721.  
  722. struct Configuration    *Config,
  723.             *PrivateConfig,
  724.             *BackupConfig;
  725. struct SpeechConfig     SpeechConfig;
  726. BOOLEAN             English = TRUE;
  727. BYTE             Status;
  728. BOOLEAN             Online,WasOnline;
  729. ULONG             OnlineMinutes;
  730. UWORD             PublicModes;
  731. struct SignalSemaphore     OnlineSemaphore;
  732.  
  733. UBYTE             LastConfig[MAX_FILENAME_LENGTH];
  734. UBYTE             DefaultPubScreenName[MAXPUBSCREENNAME + 1],
  735.              SomePubScreenName[MAXPUBSCREENNAME + 1];
  736.  
  737.     /* Capture file. */
  738.  
  739. struct Buffer        *FileCapture;
  740. BPTR             PrinterCapture;
  741. UBYTE             CaptureName[MAX_FILENAME_LENGTH];
  742. BOOLEAN             StandardPrinterCapture,
  743.              ControllerActive;
  744. LONG             BufferFlushCount;
  745. VOID            (* CaptureData)(register APTR Data,register LONG Size);
  746. BOOLEAN             RawCapture;
  747. ParseContext        *ParserStuff;
  748.  
  749.     /* Buffer. */
  750.  
  751. UBYTE            **BufferLines;
  752. LONG             Lines;
  753. struct SignalSemaphore    *BufferSemaphore;
  754. LONG             MaxLines = 100;
  755. LONG             BufferSpace;
  756. BOOLEAN             BufferClosed;
  757. BOOLEAN             BufferFrozen;
  758.  
  759. struct MinList         ReviewBufferHistory,
  760.              TextBufferHistory;
  761.  
  762.     /* Sound support.c */
  763.  
  764. struct SoundConfig     SoundConfig;
  765. BOOLEAN             SoundChanged;
  766.  
  767.     /* Phonebook. */
  768.  
  769. struct PhoneEntry    **Phonebook;
  770. LONG             PhoneSize;
  771. LONG             NumPhoneEntries;
  772. struct MinList         PhoneGroupList;
  773. ULONG             PhonebookID;
  774. ULONG             PhonebookDefaultGroup;
  775. UBYTE             PhonePassword[256];
  776. BOOLEAN             PhonePasswordUsed,
  777.              PhonebookAutoDial,
  778.              PhonebookAutoExit,
  779.              RebuildMenu;
  780. UBYTE             Password[100];
  781. UBYTE             UserName[100];
  782.  
  783. UBYTE             CurrentBBSName[40],
  784.              CurrentBBSNumber[100],
  785.              CurrentBBSComment[100];
  786.  
  787. UBYTE             LastPhone[MAX_FILENAME_LENGTH];
  788. UBYTE             LastKeys[MAX_FILENAME_LENGTH];
  789. UBYTE             LastMacros[MAX_FILENAME_LENGTH];
  790. UBYTE             LastCursorKeys[MAX_FILENAME_LENGTH];
  791. UBYTE             LastTranslation[MAX_FILENAME_LENGTH];
  792. UBYTE             LastSpeech[MAX_FILENAME_LENGTH];
  793. UBYTE             LastSound[MAX_FILENAME_LENGTH];
  794.  
  795. struct MacroKeys    *MacroKeys;
  796. struct CursorKeys    *CursorKeys;
  797.  
  798.     /* Console stuff. */
  799.  
  800. UBYTE            *StripBuffer;
  801. UWORD             LastLine,LastColumn,LastPixel;
  802. UWORD             LastPrintableColumn;
  803. UWORD             LastPrintablePixel;
  804. UWORD             CharCellNominator,CharCellDenominator;
  805. UBYTE             CurrentFontScale,FontScalingRequired,CurrentCharWidth;
  806. UBYTE             Charset,Attributes,FgPen,BgPen;
  807. WORD             CursorX,CursorY,Top,Bottom;
  808. BOOLEAN             UseRegion,RegionSet,InSequence,Quiet,Blocking;
  809. BYTE            *TabStops;
  810. UWORD             TabStopMax;
  811. BYTE             CharMode[2];
  812.  
  813. BOOLEAN             VT52_Mode;
  814.  
  815. BOOLEAN             ResetDisplay,
  816.              DisplayReopened,
  817.              FixPubScreenMode,
  818.              FixScreenSize,
  819.              Apocalypse;
  820.  
  821. struct SignalSemaphore     TerminalSemaphore;    // Protection from shape changers
  822.  
  823.     /* Flow filter. */
  824.  
  825. STRPTR             AttentionBuffers[SCAN_COUNT];
  826. BOOLEAN             BaudPending,FullCheck,UseFlow;
  827. UBYTE             BaudBuffer[80],BaudCount;
  828.  
  829. struct FlowInfo         FlowInfo;
  830.  
  831. STRPTR             DataHold;
  832. LONG             DataSize;
  833.  
  834.     /* Transfer data. */
  835.  
  836. BOOLEAN             BinaryTransfer;
  837. LONG             TransferAbortState;
  838. WORD             TransferAbortCount;
  839. LONG             TransferBits;
  840.  
  841. VOID            (* ConTransfer)(STRPTR,LONG);
  842.  
  843. UBYTE            *DownloadPath;
  844. BOOLEAN             Uploading;
  845. BOOLEAN             DidTransfer;
  846.  
  847. struct Window        *TransferWindow;
  848. UBYTE             TransferTitleBuffer[256];
  849. BOOLEAN             TransferZoomed;
  850. STRPTR             TransferWindowTitle;
  851.  
  852. struct LayoutHandle    *TransferHandle;
  853. struct List         TransferInfoList;
  854.  
  855. struct FileTransferInfo    *FileTransferInfo;
  856.  
  857. struct XPR_IO        *XprIO;
  858. struct XPR_UPDATE    *Update_Backup;
  859. struct MinList         Update_MsgList;
  860. WORD             Update_MsgCount;
  861. UBYTE             ProtocolOptsBuffer[256];
  862. BOOLEAN             NewOptions;
  863. BOOLEAN             XPRCommandSelected;
  864. UBYTE             LastXprLibrary[MAX_FILENAME_LENGTH];
  865. UBYTE             TransferProtocolName[40];
  866. UBYTE             ConvNumber[30],ConvNumber10[30];
  867. BOOLEAN             UsesZModem,SendAbort,TransferAborted,TransferFailed,TransferError;
  868.  
  869. struct Process        *TransferProcess;
  870.  
  871.     /* The standard ZModem cancel sequence
  872.      * (ten CAN chars followed by ten
  873.      * BS chars).
  874.      */
  875.  
  876. UBYTE ZModemCancel[] =
  877. {
  878.     24,24,24,24,24,24,24,24,24,24,
  879.      8, 8, 8, 8, 8, 8, 8, 8, 8, 8
  880. };
  881.  
  882.     /* Pay per minute. */
  883.  
  884. LONG             PayPerUnit[2];
  885. LONG             SecPerUnit[2];
  886. struct PhoneEntry    *ChosenEntry;
  887. struct List        *PatternList,
  888.             *ChosenPattern;
  889. UBYTE             LastPattern[MAX_FILENAME_LENGTH];
  890. BOOLEAN             PatternsChanged;
  891. struct SignalSemaphore     PatternSemaphore;
  892.  
  893.     /* Execute a command/script. */
  894.  
  895. UBYTE             WindowName[256];
  896.  
  897. ULONG             BlockNestCount;
  898. BOOLEAN             WeAreBlocking;
  899.  
  900.     /* Dial list. */
  901.  
  902. struct List        *DialList;
  903. BOOLEAN             SendStartup;
  904. LONG             FirstDialMenu = -1;
  905. struct RexxMsg        *DialMsg;
  906.  
  907.     /* TermMain data. */
  908.  
  909. BOOLEAN             ReleaseSerial;
  910. BOOLEAN             ResetSerial;
  911. BOOLEAN             MainTerminated,
  912.              IconTerminated = TRUE,
  913.              DoIconify,
  914.              DoDial = DIAL_IGNORE,
  915.              KeepQuiet;
  916.  
  917. BOOLEAN             ConfigChanged,PhonebookChanged,TranslationChanged,
  918.              MacroChanged,CursorKeysChanged,FastMacrosChanged,
  919.              HotkeysChanged,SpeechChanged,BufferChanged;
  920.  
  921.     /* String gadget hooks. */
  922.  
  923. struct Window        *CommandWindow;
  924. struct Gadget        *CommandGadget;
  925.  
  926. BOOLEAN             ClipInput,
  927.              ClipXerox,
  928.              ClipPrefix;
  929.  
  930.     /* Text sending. */
  931.  
  932. UBYTE             SendPrompt[256];
  933. LONG             SendPromptLen;
  934. BOOL            (* SendLine)(register STRPTR,register LONG);
  935.  
  936.     /* Packet window. */
  937.  
  938. struct Window        *PacketWindow;
  939. struct Gadget        *PacketGadgetArray[2];
  940. struct Menu        *PacketMenu;
  941. struct Gadget        *PacketGadgetList;
  942. struct List         PacketHistoryList;
  943.  
  944.     /* Some more colour control flags. */
  945.  
  946. BOOLEAN             Initializing,LoadColours;
  947.  
  948.     /* The character raster. */
  949.  
  950. UBYTE            *Raster,*RasterAttr;
  951. LONG             RasterWidth,RasterHeight;
  952. BOOLEAN             Marking;
  953. struct SignalSemaphore    *RasterSemaphore;
  954. BOOLEAN             RasterEnabled = TRUE;
  955.  
  956.     /* Generic lists. */
  957.  
  958. struct GenericList    *GenericListTable[GLIST_COUNT];
  959.  
  960.     /* File version test. */
  961.  
  962. ULONG VersionProps[2] =
  963. {
  964.     ID_TERM,
  965.     ID_VERS
  966. };
  967.  
  968.     /* Window stack. */
  969.  
  970. struct Window        *TopWindow;
  971.  
  972. struct Window        *WindowStack[5];
  973. WORD             WindowStackPtr;
  974.  
  975.     /* Global term ID. */
  976.  
  977. LONG             TermID;
  978. UBYTE             TermIDString[MAXPUBSCREENNAME + 1];
  979. UBYTE             RexxPortName[256];
  980.  
  981.     /* Fast! macros. */
  982.  
  983. struct List         FastMacroList;
  984. LONG             FastMacroCount;
  985. UBYTE             LastFastMacros[MAX_FILENAME_LENGTH];
  986. struct Window        *FastWindow;
  987. WORD             FastWindowLeft        = -1,
  988.              FastWindowTop        = -1,
  989.              FastWindowHeight    = -1;
  990.  
  991.     /* Double-buffered file locking. */
  992.  
  993. struct List         DoubleBufferList;
  994. struct SignalSemaphore     DoubleBufferSemaphore;
  995.  
  996.     /* XEM interface. */
  997.  
  998. struct XEM_IO        *XEM_IO;
  999. ULONG             XEM_Signal;
  1000. struct XEmulatorHostData XEM_HostData;
  1001. UBYTE            *OptionTitle;
  1002. struct List         XEM_MacroList;
  1003. struct XEmulatorMacroKey *XEM_MacroKeys;
  1004. UBYTE             EmulationName[40];
  1005.  
  1006. struct List         EmptyList;
  1007.  
  1008.     /* Screen scrolling support. */
  1009.  
  1010. UWORD             ScrollLineFirst,ScrollLineLast,
  1011.              ScrollLineCount;
  1012. struct ScrollLineInfo    *ScrollLines;
  1013.  
  1014.     /* term review buffer. */
  1015.  
  1016. struct Window        *ReviewWindow;
  1017.  
  1018.     /* Background information. */
  1019.  
  1020. ULONG             BytesIn,
  1021.              BytesOut;
  1022. struct DateStamp     SessionStart;
  1023. struct Window        *InfoWindow;
  1024.  
  1025.     /* Gadget support routines */
  1026.  
  1027. LONG             InterWidth,
  1028.              InterHeight;
  1029.  
  1030.     /* Character translation. */
  1031.  
  1032. struct TranslationEntry    **SendTable,
  1033.             **ReceiveTable;
  1034.  
  1035.     /* Window alignment information. */
  1036.  
  1037. struct WindowInfo WindowInfoTable[WINDOW_COUNT] =
  1038. {
  1039.     WINDOW_PACKET,    WC_ALIGNBELOW|WC_EXPANDWIDTH,    0,0,0,0,
  1040.     WINDOW_STATUS,    WC_ALIGNRIGHT,            0,0,0,0,
  1041.     WINDOW_FILE,    NULL,                0,0,0,0,
  1042.     WINDOW_REVIEW,    WC_ALIGNTOP|WC_EXPANDWIDTH,    0,0,0,0,
  1043.     WINDOW_FAST,    WC_ALIGNTOP|WC_ALIGNSIDE,    0,0,0,0,
  1044.     WINDOW_FONT,    NULL,                0,0,0,0,
  1045.     WINDOW_SCREEN,    NULL,                0,0,0,0,
  1046.     WINDOW_PERF,    NULL,                0,0,0,0,
  1047.     WINDOW_MAIN,    NULL,                -1,-1,0,0
  1048. };
  1049.  
  1050.     /* New user interface. */
  1051.  
  1052. struct Hook LocaleHook =
  1053. {
  1054.     {NULL},
  1055.     (HOOKFUNC)LocaleHookFunc
  1056. };
  1057.  
  1058.     /* AmigaGuide hook. */
  1059.  
  1060. struct Hook GuideHook =
  1061. {
  1062.     {NULL},
  1063.     (HOOKFUNC)GuideSetupHook
  1064. };
  1065.  
  1066.     /* Special queue management. */
  1067.  
  1068. struct MsgQueue    *SpecialQueue;
  1069.  
  1070.     /* Window and Screen backfill hook. */
  1071.  
  1072. struct Hook BackfillHook =
  1073. {
  1074.     {NULL},
  1075.     (HOOKFUNC)BackfillRoutine
  1076. };
  1077.  
  1078. ULONG BackfillTag;
  1079.  
  1080.     /* Intercept data going through SerWrite. */
  1081.  
  1082. BOOL (* SerWriteBypass)(STRPTR Buffer,LONG Size);
  1083.  
  1084.     /* The incredibly shrinking file name. */
  1085.  
  1086. UBYTE    ShrunkenName[MAX_FILENAME_LENGTH],
  1087.     OriginalName[MAX_FILENAME_LENGTH];
  1088.  
  1089.     /* Terminal emulation task. */
  1090.  
  1091. struct MsgQueue *TerminalQueue;
  1092.  
  1093.     /* AppIcon data. */
  1094.  
  1095. STATIC UWORD DropData[304] =
  1096. {
  1097.     0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  1098.     0x0000,0x0000,0x2000,0x1000,0x0000,0x0000,0xF000,0x1000,
  1099.     0x0000,0x0001,0x9800,0x1000,0x0000,0x0003,0x1C3E,0x1000,
  1100.     0x0000,0x0003,0xFC30,0x1000,0x0000,0x0000,0x01FF,0x1000,
  1101.     0x0000,0x0000,0x01FC,0x1000,0x0000,0x0060,0x0000,0x1000,
  1102.     0x0000,0x001F,0xFFFF,0xF000,0x0000,0x0000,0x0000,0x0000,
  1103.     0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0700,0x0000,
  1104.     0x07FF,0xFFFE,0x0700,0x0000,0x07FF,0xFFEE,0x0700,0x0000,
  1105.     0x0755,0x555E,0x0700,0x0000,0x07AA,0xAAAE,0x1FC0,0x0000,
  1106.     0x0755,0x555E,0x0F80,0x0000,0x07AA,0xAAAE,0x0700,0x0000,
  1107.     0x0755,0x555E,0x0200,0x0000,0x07AA,0xAAAE,0x0000,0x0000,
  1108.     0x0755,0x555E,0x0000,0x0000,0x07FF,0xFFFE,0x0000,0x0000,
  1109.     0x07FF,0xFFFE,0x0000,0x0000,0x07FF,0xFFFC,0x0000,0x0000,
  1110.     0x0000,0x0000,0x0000,0x0000,0x7FFF,0xFFFF,0xE000,0x0000,
  1111.     0x7FFF,0xFEFF,0xE000,0x0000,0x7FFF,0xFEF0,0x0000,0x0000,
  1112.     0x7FE5,0x54E7,0xFF80,0x0000,0x7FFF,0xFF8E,0x0FC0,0x0000,
  1113.     0x7FFF,0xFFBD,0xFCF0,0x0000,0x0FFF,0xFFFF,0xFEE0,0x0000,
  1114.     0x0FFF,0xFFFB,0xD700,0x0000,0x0000,0x0007,0xAF80,0x0000,
  1115.     0x0000,0x000F,0xFF80,0x0000,0x0000,0x0007,0xFF00,0x0000,
  1116.  
  1117.     0x0000,0x007F,0xFFFE,0x0000,0x0000,0x007F,0xFFFF,0x8000,
  1118.     0x0000,0x0060,0x20FF,0xE000,0x0000,0x0060,0xF0FF,0xE000,
  1119.     0x0000,0x0061,0x98FF,0xE000,0x0000,0x0063,0x1CBF,0xE000,
  1120.     0x0000,0x0063,0xFCB7,0xE000,0x0000,0x007F,0xFDFF,0xE000,
  1121.     0x0000,0x007F,0xFDFF,0xE000,0x0000,0x007F,0xFFFF,0xE000,
  1122.     0x0000,0x001F,0xFFFF,0xE000,0x0000,0x0000,0x0000,0x0000,
  1123.     0x0000,0x0000,0x0000,0x0000,0x07FF,0xFFFC,0x0000,0x0000,
  1124.     0x0FFF,0xFFFC,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
  1125.     0x0F55,0x555C,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
  1126.     0x0F55,0x555C,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
  1127.     0x0F55,0x555C,0x0000,0x0000,0x0EAA,0xAABC,0x0000,0x0000,
  1128.     0x0FFF,0xFFFC,0x0000,0x0000,0x0FFF,0xFFFC,0x0000,0x0000,
  1129.     0x0FFF,0xFFFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  1130.     0x7FFF,0xFFFF,0xC000,0x0000,0xFFFF,0xFFFF,0xC000,0x0000,
  1131.     0xFFEA,0xABFF,0xC000,0x0000,0xFFE0,0x03FF,0xFF00,0x0000,
  1132.     0xFFFF,0xFFFF,0xFFC0,0x0000,0xFFFF,0xFFFF,0xF9E0,0x0000,
  1133.     0x0000,0x007F,0xFDE0,0x0000,0x1FFF,0xFFC7,0xAF00,0x0000,
  1134.     0x0000,0x0007,0x5F00,0x0000,0x0000,0x000F,0xFF80,0x0000,
  1135.     0x0000,0x001F,0xFF00,0x0000,0x0000,0x0000,0x0000,0x0000
  1136. };
  1137.  
  1138. STATIC struct Image DropImage =
  1139. {
  1140.     0,0,
  1141.     52,38,2,
  1142.     DropData,
  1143.     0x03,0x00,
  1144.     NULL
  1145. };
  1146.  
  1147. struct DiskObject DropIcon =
  1148. {
  1149.     WB_DISKMAGIC,
  1150.     WB_DISKVERSION,
  1151.  
  1152.     NULL,
  1153.     175,18,
  1154.     52,39,
  1155.     0x0005,
  1156.     0x0003,
  1157.     0x0001,
  1158.     &DropImage,
  1159.     NULL,
  1160.     NULL,
  1161.     NULL,
  1162.     NULL,
  1163.     NULL,
  1164.     NULL,
  1165.  
  1166.     WBTOOL,
  1167.     NULL,
  1168.     NULL,
  1169.     NO_ICON_POSITION,
  1170.     NO_ICON_POSITION,
  1171.     NULL,
  1172.     NULL,
  1173.     8192
  1174. };
  1175.  
  1176.     /* Remember some of the incoming data. */
  1177.  
  1178. BOOLEAN    RememberOutput,
  1179.     RememberInput,
  1180.  
  1181.     Recording,
  1182.     RecordingLine;
  1183.  
  1184.     /* Trap settings. */
  1185.  
  1186. BOOLEAN         WatchTraps;
  1187. BOOLEAN         TrapsChanged;
  1188. BOOLEAN         FilterTraps;
  1189. UBYTE         LastTraps[MAX_FILENAME_LENGTH];
  1190. ParseContext    *TrapStuff;
  1191.  
  1192.     /* CR/LF receiver translation data. */
  1193.  
  1194. LONG        (* Translate_CR_LF)(register STRPTR Data,register LONG Size);
  1195.  
  1196.     /* End of line conversion labels. */
  1197.  
  1198. STRPTR EOL_Labels[] =
  1199. {
  1200.     "-",
  1201.     "«CR»",
  1202.     "«LF»",
  1203.     "«CR»«LF»",
  1204.     "«LF»«CR»",
  1205.  
  1206.     NULL
  1207. };
  1208.  
  1209.  
  1210. /**********************************************************************/
  1211.  
  1212.  
  1213.     /* Character access tables. */
  1214.  
  1215. STATIC UBYTE Table0[256] =
  1216. {
  1217.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1218.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1219.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1220.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1221.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1222.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1223.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1224.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1225.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1226.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1227.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1228.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1229.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1230.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1231.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1232.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1233. };
  1234.  
  1235. STATIC UBYTE Table1[256] =
  1236. {
  1237.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1238.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1239.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1240.     1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
  1241.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1242.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1243.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1244.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1245.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1246.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1247.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1248.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1249.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1250.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1251.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1252.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1253. };
  1254.  
  1255. STATIC UBYTE Table2[256] =
  1256. {
  1257.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1258.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1259.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1260.     1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,
  1261.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1262.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1263.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1264.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1265.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1266.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1267.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1268.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1269.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1270.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1271.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1272.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1273. };
  1274.  
  1275. STATIC UBYTE Table3[256] =
  1276. {
  1277.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1278.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1279.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1280.     1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,
  1281.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1282.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1283.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1284.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1285.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1286.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1287.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1288.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1289.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1290.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1291.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1292.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1293. };
  1294.  
  1295. STATIC UBYTE Table4[256] =
  1296. {
  1297.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1298.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1299.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1300.     1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,
  1301.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1302.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1303.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1304.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1305.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1306.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1307.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1308.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1309.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1310.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1311.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1312.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1313. };
  1314.  
  1315. STATIC UBYTE Table5[256] =
  1316. {
  1317.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1318.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1319.     1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1320.     1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,
  1321.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1322.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1323.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1324.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1325.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1326.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1327.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1328.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1329.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1330.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1331.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1332.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1333. };
  1334.  
  1335. STATIC UBYTE Table6[256] =
  1336. {
  1337.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1338.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1339.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1340.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1341.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1342.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1343.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1344.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1345.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1346.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1347.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1348.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1349.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1350.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1351.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1352.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1353. };
  1354.  
  1355. STATIC UBYTE Table7[256] =
  1356. {
  1357.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1358.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1359.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1360.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1361.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1362.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1363.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1364.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
  1365.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1366.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1367.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1368.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1369.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1370.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1371.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1372.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1373. };
  1374.  
  1375. STATIC UBYTE Table8[256] =
  1376. {
  1377.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1378.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1379.     0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
  1380.     1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,
  1381.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1382.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1383.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1384.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1385.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1386.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1387.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1388.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1389.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1390.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1391.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1392.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1393. };
  1394.  
  1395. STATIC UBYTE Term0[256] =
  1396. {
  1397.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1398.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1399.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1400.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1401.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1402.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1403.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
  1404.     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
  1405.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1406.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1407.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1408.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1409.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1410.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1411.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  1412.     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1413. };
  1414.  
  1415.     /* This follows the control code information. */
  1416.  
  1417. struct ControlCode ANSICode[] =
  1418. {
  1419.     /* Single character sequences */
  1420.  
  1421.     'A',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_CursorUp,        // Cursor up
  1422.     'B',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_CursorDown,        // Cursor down
  1423.     'C',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_CursorRight,        // Cursor right
  1424.     'D',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_CursorLeft,        // Cursor left
  1425.     'F',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // Enter graphics mode
  1426.     'G',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // Exit graphics mode
  1427.     'H',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_CursorHome,        // Cursor to home
  1428.     'I',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_RevLF,        // Reverse line feed
  1429.     'J',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_EraseEOS,        // Erase to end of screen
  1430.     'K',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_EraseEOL,        // Erase to end of line
  1431.     'W',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_PrintOn,        // Enter printer controller mode
  1432.     'X',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_PrintOff,        // Exit printer controller mode
  1433.     ']',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_PrintScreen,        // Print screen
  1434.     'V',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_PrintLine,        // Print cursor line
  1435.     '^',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // Enter auto print mode
  1436.     '_',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // Exit auto print mode
  1437.  
  1438. //    'D',    Table0,    NULL,     0 ,    1,    (EPTR)CursorScrollDown,        // IND
  1439.     'M',    Table0,    NULL,     0 ,    1,    (EPTR)CursorScrollUp,        // RI
  1440.     'E',    Table0,    NULL,     0 ,    1,    (EPTR)NextLine,            // NEL
  1441.     '7',    Table0,    NULL,     0 ,    1,    (EPTR)SaveCursor,        // DECSC
  1442.     '8',    Table0,    NULL,     0 ,    1,    (EPTR)LoadCursor,        // DECRC
  1443.     '=',    Table0,    NULL,     0 ,    1,    (EPTR)NumericAppMode,        // DECPAM
  1444.     '>',    Table0,    NULL,     0 ,    1,    (EPTR)NumericAppMode,        // DECPNM
  1445.     'N',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // SS2
  1446.     'O',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // SS3
  1447. //    'H',    Table0,    NULL,     0 ,    1,    (EPTR)SetTab,            // HTS
  1448.     'P',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // DCS
  1449.     '/',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // ST
  1450.     'Z',    Table0,    NULL,     0 ,    1,    (EPTR)RequestTerminal,        // DECID
  1451.     'c',    Table0,    NULL,     0 ,    1,    (EPTR)Reset,            // RIS
  1452.     '<',    Table0,    NULL,     0 ,    1,    (EPTR)VT52_EnterANSI,        // VT52 "Enter ANSI mode"
  1453.     '~',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // LS1R
  1454.     'n',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // LS2
  1455.     0x7D,    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // LS2R
  1456.     'o',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // LS3
  1457.     '|',    Table0,    NULL,     0 ,    1,    (EPTR)Ignore,            // LS3R
  1458.  
  1459.     /* Double character sequences */
  1460.  
  1461.     '[',    Table0,    NULL,    's',    2,    (EPTR)SaveCursor,
  1462.     '[',    Table0,    NULL,    'u',    2,    (EPTR)LoadCursor,
  1463.  
  1464.     '(',    Table0,    NULL,    'A',    2,    (EPTR)FontStuff,        // SCS
  1465.     '(',    Table0,    NULL,    'B',    2,    (EPTR)FontStuff,        // ASCII font
  1466.     '(',    Table0,    NULL,    '0',    2,    (EPTR)FontStuff,        // DEC special graphics font
  1467.     '(',    Table0,    NULL,    '<',    2,    (EPTR)Ignore,            // DEC supplemental font
  1468.     '(',    Table0,    NULL,    '4',    2,    (EPTR)Ignore,            // Dutch font
  1469.     '(',    Table0,    NULL,    '5',    2,    (EPTR)Ignore,            // Finnish font
  1470.     '(',    Table0,    NULL,    'C',    2,    (EPTR)Ignore,            // Finnish font
  1471.     '(',    Table0,    NULL,    'R',    2,    (EPTR)Ignore,            // French font
  1472.     '(',    Table0,    NULL,    'Q',    2,    (EPTR)Ignore,            // French Canadian font
  1473.     '(',    Table0,    NULL,    'K',    2,    (EPTR)Ignore,            // German font
  1474.     '(',    Table0,    NULL,    'Y',    2,    (EPTR)Ignore,            // Italian font
  1475.     '(',    Table0,    NULL,    '6',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1476.     '(',    Table0,    NULL,    'E',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1477.     '(',    Table0,    NULL,    'Z',    2,    (EPTR)Ignore,            // Spanish font
  1478.     '(',    Table0,    NULL,    '7',    2,    (EPTR)Ignore,            // Swedish font
  1479.     '(',    Table0,    NULL,    'H',    2,    (EPTR)Ignore,            // Swedish font
  1480.     '(',    Table0,    NULL,    '=',    2,    (EPTR)Ignore,            // Swiss font
  1481.  
  1482.     ')',    Table0,    NULL,    'A',    2,    (EPTR)FontStuff,        // SCS
  1483.     ')',    Table0,    NULL,    'B',    2,    (EPTR)FontStuff,        // ASCII font
  1484.     ')',    Table0,    NULL,    '0',    2,    (EPTR)FontStuff,        // DEC special graphics font
  1485.     ')',    Table0,    NULL,    '<',    2,    (EPTR)Ignore,            // DEC supplemental font
  1486.     ')',    Table0,    NULL,    '4',    2,    (EPTR)Ignore,            // Dutch font
  1487.     ')',    Table0,    NULL,    '5',    2,    (EPTR)Ignore,            // Finnish font
  1488.     ')',    Table0,    NULL,    'C',    2,    (EPTR)Ignore,            // Finnish font
  1489.     ')',    Table0,    NULL,    'R',    2,    (EPTR)Ignore,            // French font
  1490.     ')',    Table0,    NULL,    'Q',    2,    (EPTR)Ignore,            // French Canadian font
  1491.     ')',    Table0,    NULL,    'K',    2,    (EPTR)Ignore,            // German font
  1492.     ')',    Table0,    NULL,    'Y',    2,    (EPTR)Ignore,            // Italian font
  1493.     ')',    Table0,    NULL,    '6',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1494.     ')',    Table0,    NULL,    'E',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1495.     ')',    Table0,    NULL,    'Z',    2,    (EPTR)Ignore,            // Spanish font
  1496.     ')',    Table0,    NULL,    '7',    2,    (EPTR)Ignore,            // Swedish font
  1497.     ')',    Table0,    NULL,    'H',    2,    (EPTR)Ignore,            // Swedish font
  1498.     ')',    Table0,    NULL,    '=',    2,    (EPTR)Ignore,            // Swiss font
  1499.  
  1500.     '+',    Table0,    NULL,    'A',    2,    (EPTR)Ignore,            // British font
  1501.     '+',    Table0,    NULL,    'B',    2,    (EPTR)Ignore,            // ASCII font
  1502.     '+',    Table0,    NULL,    '0',    2,    (EPTR)Ignore,            // DEC special graphics font
  1503.     '+',    Table0,    NULL,    '<',    2,    (EPTR)Ignore,            // DEC supplemental font
  1504.     '+',    Table0,    NULL,    '4',    2,    (EPTR)Ignore,            // Dutch font
  1505.     '+',    Table0,    NULL,    '5',    2,    (EPTR)Ignore,            // Finnish font
  1506.     '+',    Table0,    NULL,    'C',    2,    (EPTR)Ignore,            // Finnish font
  1507.     '+',    Table0,    NULL,    'R',    2,    (EPTR)Ignore,            // French font
  1508.     '+',    Table0,    NULL,    'Q',    2,    (EPTR)Ignore,            // French Canadian font
  1509.     '+',    Table0,    NULL,    'K',    2,    (EPTR)Ignore,            // German font
  1510.     '+',    Table0,    NULL,    'Y',    2,    (EPTR)Ignore,            // Italian font
  1511.     '+',    Table0,    NULL,    '6',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1512.     '+',    Table0,    NULL,    'E',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1513.     '+',    Table0,    NULL,    'Z',    2,    (EPTR)Ignore,            // Spanish font
  1514.     '+',    Table0,    NULL,    '7',    2,    (EPTR)Ignore,            // Swedish font
  1515.     '+',    Table0,    NULL,    'H',    2,    (EPTR)Ignore,            // Swedish font
  1516.     '+',    Table0,    NULL,    '=',    2,    (EPTR)Ignore,            // Swiss font
  1517.  
  1518.     '*',    Table0,    NULL,    'A',    2,    (EPTR)Ignore,            // British font
  1519.     '*',    Table0,    NULL,    'B',    2,    (EPTR)Ignore,            // ASCII font
  1520.     '*',    Table0,    NULL,    '0',    2,    (EPTR)Ignore,            // DEC special graphics font
  1521.     '*',    Table0,    NULL,    '<',    2,    (EPTR)Ignore,            // DEC supplemental font
  1522.     '*',    Table0,    NULL,    '4',    2,    (EPTR)Ignore,            // Dutch font
  1523.     '*',    Table0,    NULL,    '5',    2,    (EPTR)Ignore,            // Finnish font
  1524.     '*',    Table0,    NULL,    'C',    2,    (EPTR)Ignore,            // Finnish font
  1525.     '*',    Table0,    NULL,    'R',    2,    (EPTR)Ignore,            // French font
  1526.     '*',    Table0,    NULL,    'Q',    2,    (EPTR)Ignore,            // French Canadian font
  1527.     '*',    Table0,    NULL,    'K',    2,    (EPTR)Ignore,            // German font
  1528.     '*',    Table0,    NULL,    'Y',    2,    (EPTR)Ignore,            // Italian font
  1529.     '*',    Table0,    NULL,    '6',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1530.     '*',    Table0,    NULL,    'E',    2,    (EPTR)Ignore,            // Norwegian/Danish font
  1531.     '*',    Table0,    NULL,    'Z',    2,    (EPTR)Ignore,            // Spanish font
  1532.     '*',    Table0,    NULL,    '7',    2,    (EPTR)Ignore,            // Swedish font
  1533.     '*',    Table0,    NULL,    'H',    2,    (EPTR)Ignore,            // Swedish font
  1534.     '*',    Table0,    NULL,    '=',    2,    (EPTR)Ignore,            // Swiss font
  1535.  
  1536.     '#',    Table0,    NULL,    '3',    2,    (EPTR)ScaleFont,        // DECHDL (top half)
  1537.     '#',    Table0,    NULL,    '4',    2,    (EPTR)ScaleFont,        // DECHDL (bottom half)
  1538.     '#',    Table0,    NULL,    '5',    2,    (EPTR)ScaleFont,        // DECSWL
  1539.     '#',    Table0,    NULL,    '6',    2,    (EPTR)ScaleFont,        // DECDWL
  1540.     '#',    Table0,    NULL,    '8',    2,    (EPTR)AlignmentTest,        // DECALN
  1541.     ' ',    Table0,    NULL,    'F',    2,    (EPTR)Ignore,            // S7C1T
  1542.     ' ',    Table0,    NULL,    'G',    2,    (EPTR)Ignore,            // C8C1T
  1543.  
  1544.     /* Three character sequence */
  1545.  
  1546.     'Y',    Table7,    NULL,     0 ,    3,    (EPTR)VT52_SetCursor,        // Direct cursor address
  1547.  
  1548.     /* Multiple character sequences */
  1549.  
  1550.     '(',    Table6,    Term0,    'D',    0,    (EPTR)Ignore,            // SCS
  1551.  
  1552.     '[',    Table3,    NULL,    'i',    0,    (EPTR)PrinterController,    // Print mode
  1553.  
  1554.     '[',    Table3,    NULL,    'n',    0,    (EPTR)RequestInformation,    // DSR
  1555.     '[',    Table3,    NULL,    'c',    0,    (EPTR)RequestTerminal,        // DA
  1556.     '[',    Table3,    NULL,    'h',    0,    (EPTR)SetSomething,        // Terminal modes
  1557.     '[',    Table3,    NULL,    'l',    0,    (EPTR)SetSomething,        // Terminal modes
  1558.  
  1559.     '[',    Table4,    NULL,    'h',    0,    (EPTR)Ignore,
  1560.     '[',    Table5,    NULL,    'p',    0,    (EPTR)Ignore,            // DECSCL
  1561.  
  1562.     '[',    Table1,    NULL,    'A',    0,    (EPTR)MoveCursor,        // CUU
  1563.     '[',    Table1,    NULL,    'B',    0,    (EPTR)MoveCursor,        // CUD
  1564.     '[',    Table1,    NULL,    'C',    0,    (EPTR)MoveCursor,        // CUF
  1565.     '[',    Table1,    NULL,    'D',    0,    (EPTR)MoveCursor,        // CUB
  1566.     '[',    Table1,    NULL,    'G',    0,    (EPTR)MoveColumn,
  1567.     '[',    Table3,    NULL,    'K',    0,    (EPTR)EraseLine,        // EL/DECSEL
  1568.     '[',    Table3,    NULL,    'J',    0,    (EPTR)EraseScreen,        // ED/DECSED
  1569.     '[',    Table1,    NULL,    'P',    0,    (EPTR)EraseCharacters,        // DCH
  1570.     '[',    Table1,    NULL,    'X',    0,    (EPTR)EraseCharacters,        // ECH (sort of)
  1571.     '[',    Table1,    NULL,    '@',    0,    (EPTR)InsertCharacters,        // ICH
  1572.     '[',    Table1,    NULL,    'L',    0,    (EPTR)InsertLine,        // IL
  1573.     '[',    Table1,    NULL,    'M',    0,    (EPTR)ClearLine,        // DL
  1574.     '[',    Table1,    NULL,    'g',    0,    (EPTR)SetTabs,            // TBC
  1575.     '[',    Table5,    NULL,    'q',    0,    (EPTR)Ignore,            // DECSCA
  1576.  
  1577.     '[',    Table2,    NULL,    'H',    0,    (EPTR)SetAbsolutePosition,    // CUP
  1578.     '[',    Table2,    NULL,    'f',    0,    (EPTR)SetTopPosition,        // HVP
  1579.     '[',    Table2,    NULL,    'm',    0,    (EPTR)SetAttributes,        // SGR
  1580.     '[',    Table2,    NULL,    'y',    0,    (EPTR)Ignore,            // DECTST
  1581.     '[',    Table2,    NULL,    'r',    0,    (EPTR)SetRegion,        // DECSTBM
  1582.  
  1583.     '[',    Table1,    NULL,    'S',    0,    (EPTR)ScrollUp,
  1584.     '[',    Table1,    NULL,    'T',    0,    (EPTR)ScrollDown,
  1585.     '[',    Table1,    NULL,    'E',    0,    (EPTR)MoveCursorDown,
  1586.     '[',    Table1,    NULL,    'F',    0,    (EPTR)MoveCursorUp,
  1587.  
  1588.     '[',    Table8,    NULL,    'z',    0,    (EPTR)Ignore,            // DEC private stuff
  1589.     '[',    Table8,    NULL,    '{',    0,    (EPTR)Ignore            // DEC private stuff
  1590. };
  1591.  
  1592. WORD NumCodes = NumElements(ANSICode);
  1593.  
  1594.  
  1595. /**********************************************************************/
  1596.  
  1597.  
  1598. struct SignalSemaphore    ARexxQueueSemaphore;
  1599. struct List        ARexxQueue;
  1600. BOOLEAN            ARexxRunning;
  1601.  
  1602.  
  1603. /**********************************************************************/
  1604.  
  1605.  
  1606. UWORD            PenTable[16];
  1607. UBYTE            TextAttributeTable[16];
  1608. WORD            ForegroundPen,
  1609.             BackgroundPen;
  1610.  
  1611.  
  1612. /**********************************************************************/
  1613.  
  1614.  
  1615. BOOLEAN            ChatMode;
  1616. ULONG            SliderType;
  1617. ULONG            CycleType;
  1618.  
  1619.  
  1620. /**********************************************************************/
  1621.  
  1622.  
  1623. struct ColourTable    *NormalColourTable,
  1624.             *BlinkColourTable,
  1625.             *ANSIColourTable,
  1626.             *EGAColourTable,
  1627.             *DefaultColourTable,
  1628.             *MonoColourTable;
  1629.  
  1630.  
  1631. /**********************************************************************/
  1632.  
  1633.  
  1634. UBYTE             Language[80];
  1635.  
  1636.  
  1637. /**********************************************************************/
  1638.  
  1639.  
  1640. STRPTR CharCodes[256] =
  1641. {
  1642.     "NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS" ,"HT" ,"LF" ,"VT" ,"FF" ,"CR" ,"SO" ,"SI" ,
  1643.     "DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM" ,"SUB","ESC","FS" ,"GS" ,"RS" ,"US" ,
  1644.     "SP" , "!" , "\"", "#" , "$" , "%" , "&" , "'" , "(" , ")" , "*" , "+" , "," , "-" , "." , "/" ,
  1645.      "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , ":" , ";" , "<" , "=" , ">" , "?" ,
  1646.      "@" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" ,
  1647.      "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" , "[" , "\\", "]" , "^" , "_" ,
  1648.      "`" , "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o" ,
  1649.      "p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" , "{" , "|" , "}" , "~" ,"DEL",
  1650.     "128","129","130","131","132","133","134","135","136","137","138","139","140","141","SS2","SS3",
  1651.     "DCS","145","146","147","148","149","150","151","152","153","154","CSI","ST" ,"OSC","PM" ,"APC",
  1652.     "NBS", "¡" , "¢" , "£" , "¤" , "¥" , "¦" , "§" , "¨" , "©" , "ª" , "«" , "¬" ,"SHY", "®" , "¯" ,
  1653.      "°" , "±" , "²" , "³" , "´" , "µ" , "¶" , "·" , "¸" , "¹" , "º" , "»" , "¼" , "½" , "¾" , "¿" ,
  1654.      "À" , "Á" , "Â" , "Ã" , "Ä" , "Å" , "Æ" , "Ç" , "È" , "É" , "Ê" , "Ë" , "Ì" , "Í" , "Î" , "Ï" ,
  1655.      "Ð" , "Ñ" , "Ò" , "Ó" , "Ô" , "Õ" , "Ö" , "×" , "Ø" , "Ù" , "Ú" , "Û" , "Ü" , "Ý" , "Þ" , "ß" ,
  1656.      "à" , "á" , "â" , "ã" , "ä" , "å" , "æ" , "ç" , "è" , "é" , "ê" , "ë" , "ì" , "í" , "î" , "ï" ,
  1657.      "ð" , "ñ" , "ò" , "ó" , "ô" , "õ" , "ö" , "÷" , "ø" , "ù" , "ú" , "û" , "ü" , "ý" , "þ" , "ÿ"
  1658. };
  1659.  
  1660.  
  1661. /**********************************************************************/
  1662.  
  1663.  
  1664. struct Window        *MatrixWindow;
  1665.  
  1666.  
  1667. /**********************************************************************/
  1668.  
  1669.  
  1670. VOID            (* SaveRaster)(LONG First,LONG Last);
  1671.  
  1672.  
  1673. /**********************************************************************/
  1674.  
  1675.  
  1676. struct SignalSemaphore     BufferTaskSemaphore;
  1677. struct TextBufferInfo    *BufferInfoData;
  1678.  
  1679. struct SignalSemaphore     ReviewTaskSemaphore;
  1680. struct TextBufferInfo    *ReviewInfoData;
  1681.  
  1682.  
  1683. /**********************************************************************/
  1684.  
  1685.  
  1686. STATIC STRPTR TransferMappings1[] =
  1687. {
  1688.     "XPR",
  1689.     "PROGRAM",
  1690.     NULL
  1691. };
  1692.  
  1693. STATIC STRPTR TransferMappings2[] =
  1694. {
  1695.     "XPR",
  1696.     "PROGRAM",
  1697.     "DEFAULT",
  1698.     NULL
  1699. };
  1700.  
  1701. STATIC STRPTR TransferMappings3[] =
  1702. {
  1703.     "XPR",
  1704.     "PROGRAM",
  1705.     "DEFAULT",
  1706.     "INTERNAL",
  1707.     NULL
  1708. };
  1709.  
  1710. STATIC STRPTR DestructiveBSMappings[] =
  1711. {
  1712.     "OFF",
  1713.     "OVERSTRIKE",
  1714.     "SHIFT",
  1715.     NULL
  1716. };
  1717.  
  1718. STATIC STRPTR ParityMappings[] =
  1719. {
  1720.     "NONE",
  1721.     "EVEN",
  1722.     "ODD",
  1723.     "MARK",
  1724.     "SPACE",
  1725.     NULL
  1726. };
  1727.  
  1728. STATIC STRPTR HandshakingMappings[] =
  1729. {
  1730.     "NONE",
  1731.     "RTSCTS",
  1732.     "RTSCTSDSR",
  1733.     NULL
  1734. };
  1735.  
  1736. STATIC STRPTR DuplexMappings[] =
  1737. {
  1738.     "FULL",
  1739.     "HALF",
  1740.     NULL
  1741. };
  1742.  
  1743. STATIC STRPTR ColourMappings[] =
  1744. {
  1745.     "FOUR",
  1746.     "EIGHT",
  1747.     "SIXTEEN",
  1748.     "TWO",
  1749.     NULL
  1750. };
  1751.  
  1752. STATIC STRPTR StatusMappings[] =
  1753. {
  1754.     "DISABLED",
  1755.     "STANDARD",
  1756.     "COMPRESSED",
  1757.     NULL
  1758. };
  1759.  
  1760. STATIC STRPTR BellMappings[] =
  1761. {
  1762.     "NONE",
  1763.     "VISIBLE",
  1764.     "AUDIBLE",
  1765.     "BOTH",
  1766.     "SYSTEM",
  1767.     NULL
  1768. };
  1769.  
  1770. STATIC STRPTR AlertMappings[] =
  1771. {
  1772.     "NONE",
  1773.     "BELL",
  1774.     "SCREEN",
  1775.     "BOTH",
  1776.     NULL
  1777. };
  1778.  
  1779. STATIC STRPTR EmulationMappings[] =
  1780. {
  1781.     "INTERNAL",
  1782.     "ATOMIC",
  1783.     "TTY",
  1784.     "EXTERNAL",
  1785.     "HEX",
  1786.     NULL
  1787. };
  1788.  
  1789. STATIC STRPTR FontMappings[] =
  1790. {
  1791.     "STANDARD",
  1792.     "IBM",
  1793.     "IBMRAW",
  1794.     NULL
  1795. };
  1796.  
  1797. STATIC STRPTR EOL_Mappings[] =
  1798. {
  1799.     "IGNORE",
  1800.     "CR",
  1801.     "LF",
  1802.     "CRLF",
  1803.     "LFCR",
  1804.     NULL
  1805. };
  1806.  
  1807. STATIC STRPTR IdentifyMappings[] =
  1808. {
  1809.     "IGNORE",
  1810.     "FILETYPE",
  1811.     "SOURCE",
  1812.     NULL
  1813. };
  1814.  
  1815. STATIC STRPTR ApplicationMappings[] =
  1816. {
  1817.     "STANDARD",
  1818.     "APPLICATION",
  1819.     NULL
  1820. };
  1821.  
  1822. STATIC STRPTR FontScaleMappings[] =
  1823. {
  1824.     "NORMAL",
  1825.     "HALF",
  1826.     NULL
  1827. };
  1828.  
  1829. STATIC STRPTR ScrollMappings[] =
  1830. {
  1831.     "JUMP",
  1832.     "SMOOTH",
  1833.     NULL
  1834. };
  1835.  
  1836. STATIC STRPTR SexMappings[] =
  1837. {
  1838.     "MALE",
  1839.     "FEMALE",
  1840.     NULL
  1841. };
  1842.  
  1843. STATIC STRPTR OnlineMappings[] =
  1844. {
  1845.     "TIME",
  1846.     "COST",
  1847.     "BOTH",
  1848.     NULL
  1849. };
  1850.  
  1851. STATIC STRPTR AutoDateMappings[] =
  1852. {
  1853.     "NAME",
  1854.     "INCLUDE",
  1855.     NULL
  1856. };
  1857.  
  1858. STATIC STRPTR PacingMappings[] =
  1859. {
  1860.     "DIRECT",
  1861.     "ECHO",
  1862.     "ANYECHO",
  1863.     "PROMPT",
  1864.     "DELAY",
  1865.     "KEYBOARD",
  1866.     NULL
  1867. };
  1868.  
  1869. STATIC STRPTR OpenBufferMappings[] =
  1870. {
  1871.     "TOP",
  1872.     "END",
  1873.     NULL
  1874. };
  1875.  
  1876. STATIC STRPTR BufferPositionMappings[] =
  1877. {
  1878.     "LEFT",
  1879.     "MID",
  1880.     "RIGHT",
  1881.     NULL
  1882. };
  1883.  
  1884. STATIC STRPTR OwnDevUnitRequestMappings[] =
  1885. {
  1886.     "RELEASE",
  1887.     "RELEASERETRY",
  1888.     "IGNORE",
  1889.     NULL
  1890. };
  1891.  
  1892. STATIC STRPTR TransferErrorNotifyMappings[] =
  1893. {
  1894.     "NEVER",
  1895.     "ALWAYS",
  1896.     "START",
  1897.     "END",
  1898.     NULL
  1899. };
  1900.  
  1901. STATIC STRPTR DialModeMappings[] =
  1902. {
  1903.     "PULSE",
  1904.     "TONE",
  1905.     "MODEM",
  1906.     "ISDN",
  1907.     NULL
  1908. };
  1909.  
  1910. STATIC STRPTR RequesterModeMappings[] =
  1911. {
  1912.     "CENTRE",
  1913.     "PREFS",
  1914.     "IGNORE",
  1915.     NULL
  1916. };
  1917.  
  1918. STATIC STRPTR BufferModeMappings[] =
  1919. {
  1920.     "DATAFLOW",
  1921.     "REVIEW",
  1922.     NULL
  1923. };
  1924.  
  1925. STATIC STRPTR IdentificationMappings[] =
  1926. {
  1927.     "VT200",
  1928.     "VT102",
  1929.     "VT101",
  1930.     "VT100",
  1931.     NULL
  1932. };
  1933.  
  1934. struct AttributeEntry AttributeTable[] =
  1935. {
  1936.     0,    "TERM",                INFO_STEM,    TRUE,    NULL,            ATTR_APPLICATION,
  1937.  
  1938.     1,     "VERSION",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_VERSION,
  1939.     1,     "SCREEN",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SCREEN,
  1940.  
  1941.     1,     "SESSION",            INFO_STEM,    TRUE,    NULL,            ATTR_APPLICATION_SESSION,
  1942.     2,      "ONLINE",            INFO_BOOLEAN,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_ONLINE,
  1943.     2,      "SESSIONSTART",        INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_SESSIONSTART,
  1944.     2,      "BYTESSENT",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_BYTESSENT,
  1945.     2,      "BYTESRECEIVED",        INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_BYTESRECEIVED,
  1946.     2,      "CONNECTMESSAGE",        INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_CONNECTMESSAGE,
  1947.     2,      "BBSNAME",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_BBSNAME,
  1948.     2,      "BBSNUMBER",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_BBSNUMBER,
  1949.     2,      "BBSCOMMENT",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_BBSCOMMENT,
  1950.     2,      "USERNAME",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_USERNAME,
  1951.     2,      "ONLINEMINUTES",        INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_ONLINEMINUTES,
  1952.     2,      "ONLINECOST",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_SESSION_ONLINECOST,
  1953.  
  1954.     1,     "AREXX",            INFO_TEXT,    TRUE,    NULL,            ATTR_APPLICATION_AREXX,
  1955.     1,     "LASTERROR",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_LASTERROR,
  1956.  
  1957.     1,     "TERMINAL",            INFO_STEM,    TRUE,    NULL,            ATTR_APPLICATION_TERMINAL,
  1958.     2,      "ROWS",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_TERMINAL_ROWS,
  1959.     2,      "COLUMNS",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_TERMINAL_COLUMNS,
  1960.  
  1961.     1,     "BUFFER",            INFO_STEM,    TRUE,    NULL,            ATTR_APPLICATION_BUFFER,
  1962.     2,      "SIZE",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_APPLICATION_BUFFER_SIZE,
  1963.  
  1964.     0,    "SERIALPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_SERIAL,
  1965.     1,     "BAUDRATE",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_BAUDRATE,
  1966.     1,     "BREAKLENGTH",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_BREAKLENGTH,
  1967.     1,     "BUFFERSIZE",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_BUFFERSIZE,
  1968.     1,     "DEVICENAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SERIAL_DEVICENAME,
  1969.     1,     "UNIT",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_UNIT,
  1970.     1,     "BITSPERCHAR",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_BITSPERCHAR,
  1971.     1,     "PARITYMODE",            INFO_MAPPED,    FALSE,    ParityMappings,        ATTR_PREFS_SERIAL_PARITYMODE,
  1972.     1,     "STOPBITS",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_STOPBITS,
  1973.     1,     "HANDSHAKINGMODE",        INFO_MAPPED,    FALSE,    HandshakingMappings,    ATTR_PREFS_SERIAL_HANDSHAKINGMODE,
  1974.     1,     "DUPLEXMODE",            INFO_MAPPED,    FALSE,    DuplexMappings,        ATTR_PREFS_SERIAL_DUPLEXMODE,
  1975.     1,     "INTERNALXONXOFF",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_XONXOFF,
  1976.     1,     "XONXOFF",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_XONXOFF,
  1977.     1,     "HIGHSPEED",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_HIGHSPEED,
  1978.     1,     "SHARED",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_SHARED,
  1979.     1,     "STRIPBIT8",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_STRIPBIT8,
  1980.     1,     "CARRIERCHECK",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_CARRIERCHECK,
  1981.     1,     "PASSXONXOFFTHROUGH",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_PASSXONXOFFTHROUGH,
  1982.     1,     "QUANTUM",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SERIAL_QUANTUM,
  1983.     1,     "USEOWNDEVUNIT",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_USE_OWNDEVUNIT,
  1984.     1,     "OWNDEVUNITREQUESTS",        INFO_MAPPED,    FALSE,    OwnDevUnitRequestMappings,    ATTR_PREFS_SERIAL_OWNDEVUNIT_REQUEST,
  1985.     1,     "DIRECTCONNECTION",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_DIRECT_CONNECTION,
  1986.     1,     "RELEASEWHENONLINE",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_RELEASE_WHEN_ONLINE,
  1987.     1,     "RELEASEWHENDIALING",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_RELEASE_WHEN_DIALING,
  1988.     1,     "NOODUIFSHARED",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_NO_ODU_IF_SHARED,
  1989.     1,     "LOCALECHO",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SERIAL_LOCAL_ECHO,
  1990.  
  1991.     0,    "MODEMPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_MODEM,
  1992.     1,     "MODEMINITTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_MODEMINITTEXT,
  1993.     1,     "MODEMEXITTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_MODEMEXITTEXT,
  1994.     1,     "MODEMHANGUPTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_MODEMHANGUPTEXT,
  1995.     1,     "DIALPREFIXTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_DIALPREFIXTEXT,
  1996.     1,     "DIALSUFFIXTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_DIALSUFFIXTEXT,
  1997.     1,     "NOCARRIERTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_NOCARRIERTEXT,
  1998.     1,     "NODIALTONETEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_NODIALTONETEXT,
  1999.     1,     "CONNECTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_CONNECTTEXT,
  2000.     1,     "VOICETEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_VOICETEXT,
  2001.     1,     "RINGTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_RINGTEXT,
  2002.     1,     "BUSYTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_BUSYTEXT,
  2003.     1,     "OKTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_OKTEXT,
  2004.     1,     "ERRORTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_ERRORTEXT,
  2005.     1,     "REDIALDELAY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_REDIALDELAY,
  2006.     1,     "DIALRETRIES",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_DIALRETRIES,
  2007.     1,     "DIALTIMEOUT",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_DIALTIMEOUT,
  2008.     1,     "CONNECTAUTOBAUD",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_CONNECTAUTOBAUD,
  2009.     1,     "HANGUPDROPSDTR",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_HANGUPDROPSDTR,
  2010.     1,     "REDIALAFTERHANGUP",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_REDIALAFTERHANGUP,
  2011.     1,     "NOCARRIERISBUSY",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_NOCARRIERISBUSY,
  2012.     1,     "CONNECTLIMIT",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_CONNECTLIMIT,
  2013.     1,     "CONNECTLIMITMACRO",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_CONNECTLIMITMACRO,
  2014.     1,     "TIMETOCONNECT",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_TIME_TO_CONNECT,
  2015.     1,     "VERBOSEDIALING",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_VERBOSEDIALING,
  2016.     1,     "DIALMODE",            INFO_MAPPED,    FALSE,    DialModeMappings,    ATTR_PREFS_MODEM_DIAL_MODE,
  2017.     1,     "INTERDIALDELAY",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_INTER_DIAL_DELAY,
  2018.     1,     "CHARSENDDELAY",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MODEM_CHAR_SEND_DELAY,
  2019.     1,     "DONOTSENDCOMMANDS",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_DO_NOT_SEND_COMMANDS,
  2020.     1,     "PBXPREFIXTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MODEM_PBX_PREFIX,
  2021.     1,     "PBX",                INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MODEM_PBX_MODE,
  2022.  
  2023.     0,    "COMMANDPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_COMMANDS,
  2024.     1,     "STARTUPMACROTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_COMMANDS_STARTUPMACROTEXT,
  2025.     1,     "LOGINMACROTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_COMMANDS_LOGINMACROTEXT,
  2026.     1,     "LOGOFFMACROTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_COMMANDS_LOGOFFMACROTEXT,
  2027.     1,     "UPLOADMACROTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_COMMANDS_UPLOADMACROTEXT,
  2028.     1,     "DOWNLOADMACROTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_COMMANDS_DOWNLOADMACROTEXT,
  2029.  
  2030.     0,    "SCREENPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_SCREEN,
  2031.     1,     "COLOURMODE",            INFO_MAPPED,    FALSE,    ColourMappings,        ATTR_PREFS_SCREEN_COLOURMODE,
  2032.     1,     "FONTNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SCREEN_FONTNAME,
  2033.     1,     "FONTSIZE",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SCREEN_FONTSIZE,
  2034.     1,     "MAKESCREENPUBLIC",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_MAKESCREENPUBLIC,
  2035.     1,     "SHANGHAIWINDOWS",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_SHANGHAIWINDOWS,
  2036.     1,     "BLINKING",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_BLINKING,
  2037.     1,     "FASTERLAYOUT",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_FASTERLAYOUT,
  2038.     1,     "TITLEBAR",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_TITLEBAR,
  2039.     1,     "STATUSLINEMODE",        INFO_MAPPED,    FALSE,    StatusMappings,        ATTR_PREFS_SCREEN_STATUSLINEMODE,
  2040.     1,     "USEPUBSCREEN",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_USEWORKBENCH,
  2041.     1,     "PUBSCREENNAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SCREEN_PUBSCREENNAME,
  2042.     1,     "ONLINEDISPLAY",        INFO_MAPPED,    FALSE,    OnlineMappings,        ATTR_PREFS_SCREEN_ONLINEDISPLAY,
  2043.     1,     "USEPENS",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_USEPENS,
  2044.     1,     "WINDOWBORDER",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_WINDOW_BORDER,
  2045.     1,     "SPLITSTATUS",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SCREEN_SPLIT_STATUS,
  2046.  
  2047.     0,    "TERMINALPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_TERMINAL,
  2048.     1,     "BELLMODE",            INFO_MAPPED,    FALSE,    BellMappings,        ATTR_PREFS_TERMINAL_BELLMODE,
  2049.     1,     "ALERTMODE",            INFO_MAPPED,    FALSE,    AlertMappings,        ATTR_PREFS_MISC_ALERTMODE,
  2050.     1,     "EMULATIONMODE",        INFO_MAPPED,    FALSE,    EmulationMappings,    ATTR_PREFS_TERMINAL_EMULATIONMODE,
  2051.     1,     "FONTMODE",            INFO_MAPPED,    FALSE,    FontMappings,        ATTR_PREFS_TERMINAL_FONTMODE,
  2052.     1,     "SENDCRMODE",            INFO_MAPPED,    FALSE,    EOL_Mappings,        ATTR_PREFS_TERMINAL_SENDCRMODE,
  2053.     1,     "SENDLFMODE",            INFO_MAPPED,    FALSE,    EOL_Mappings,        ATTR_PREFS_TERMINAL_SENDLFMODE,
  2054.     1,     "RECEIVECRMODE",        INFO_MAPPED,    FALSE,    EOL_Mappings,        ATTR_PREFS_TERMINAL_RECEIVECRMODE,
  2055.     1,     "RECEIVELFMODE",        INFO_MAPPED,    FALSE,    EOL_Mappings,        ATTR_PREFS_TERMINAL_RECEIVELFMODE,
  2056.     1,     "NUMCOLUMNS",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_NUMCOLUMNS,
  2057.     1,     "NUMLINES",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_NUMLINES,
  2058.     1,     "KEYMAPNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_KEYMAPNAME,
  2059.     1,     "EMULATIONNAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_EMULATIONNAME,
  2060.     1,     "FONTNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_FONTNAME,
  2061.     1,     "FONTSIZE",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_FONTSIZE,
  2062.     1,     "USETERMINALPROCESS",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_USETERMINALPROCESS,
  2063.     1,     "AUTOSIZE",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TERMINAL_AUTOSIZE,
  2064.  
  2065.     0,    "PATHPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_PATHS,
  2066.     1,     "ASCIIUPLOADPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_ASCIIUPLOADPATH,
  2067.     1,     "ASCIIDOWNLOADPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_ASCIIDOWNLOADPATH,
  2068.     1,     "TEXTUPLOADPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_TEXTUPLOADPATH,
  2069.     1,     "TEXTDOWNLOADPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_TEXTDOWNLOADPATH,
  2070.     1,     "BINARYUPLOADPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_BINARYUPLOADPATH,
  2071.     1,     "BINARYDOWNLOADPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_BINARYDOWNLOADPATH,
  2072.     1,     "CONFIGPATH",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_CONFIGPATH,
  2073.     1,     "EDITORNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_EDITORNAME,
  2074.     1,     "HELPFILENAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PATHS_HELPFILENAME,
  2075.  
  2076.     0,    "MISCPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_MISC,
  2077.     1,     "PRIORITY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MISC_PRIORITY,
  2078.     1,     "BACKUPCONFIG",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_BACKUPCONFIG,
  2079.     1,     "OPENFASTMACROPANEL",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_OPENFASTMACROPANEL,
  2080.     1,     "RELEASEDEVICE",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_RELEASEDEVICE,
  2081.     1,     "OVERRIDEPATH",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_OVERRIDEPATH,
  2082.     1,     "AUTOUPLOAD",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_AUTOUPLOAD,
  2083.     1,     "SETARCHIVEDBIT",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_SETARCHIVEDBIT,
  2084.     1,     "COMMENTMODE",            INFO_MAPPED,    FALSE,    IdentifyMappings,    ATTR_PREFS_MISC_COMMENTMODE,
  2085.     1,     "TRANSFERICONS",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_TRANSFERICONS,
  2086.     1,     "CREATEICONS",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_CREATEICONS,
  2087.     1,     "SIMPLEIO",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_SIMPLEIO,
  2088.     1,     "HIDEUPLOADICON",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_HIDE_UPLOAD_ICON,
  2089.     1,     "TRANSFERPERFMETER",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_TRANSFER_PERFMETER,
  2090.     1,     "IOBUFFERSIZE",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MISC_IOBUFFERSIZE,
  2091.     1,     "PROTECTIVEMODE",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_MISC_OVERWRITE_WARNING,
  2092.     1,     "ALERTMODE",            INFO_MAPPED,    FALSE,    AlertMappings,        ATTR_PREFS_MISC_ALERTMODE,
  2093.     1,     "REQUESTERMODE",        INFO_MAPPED,    FALSE,    RequesterModeMappings,    ATTR_PREFS_MISC_REQUESTERMODE,
  2094.     1,     "REQUESTERWIDTH",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MISC_REQUESTERWIDTH,
  2095.     1,     "REQUESTERHEIGHT",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_MISC_REQUESTERHEIGHT,
  2096.     1,     "WAITSTRING",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MISC_WAITSTRING,
  2097.     1,     "WAITCOMMAND",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_MISC_WAITSTRING,
  2098.  
  2099.     0,    "CLIPBOARDPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD,
  2100.     1,     "UNIT",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_UNIT,
  2101.     1,     "LINEDELAY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_LINEDELAY,
  2102.     1,     "CHARDELAY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_CHARDELAY,
  2103.     1,     "INSERTPREFIXTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_INSERTPREFIXTEXT,
  2104.     1,     "INSERTSUFFIXTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_INSERTSUFFIXTEXT,
  2105.     1,     "LINEPROMPTTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_LINEPROMPT,
  2106.     1,     "TEXTPACING",            INFO_MAPPED,    FALSE,    PacingMappings,        ATTR_PREFS_CLIPBOARD_TEXTPACING,
  2107.     1,     "SENDTIMEOUT",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_SENDTIMEOUT,
  2108.     1,     "CONVERTLF",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CLIPBOARD_CONVERTLF,
  2109.  
  2110.     0,    "CAPTUREPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_CAPTURE,
  2111.     1,     "LOGACTIONS",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_LOGACTIONS,
  2112.     1,     "LOGCALLS",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_LOGCALLS,
  2113.     1,     "LOGFILENAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_LOGFILENAME,
  2114.     1,     "MAXBUFFERSIZE",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_MAXBUFFERSIZE,
  2115.     1,     "BUFFER",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_BUFFER,
  2116.     1,     "CONNECTAUTOCAPTURE",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_CONNECTAUTOCAPTURE,
  2117.     1,     "AUTOCAPTUREDATE",        INFO_MAPPED,    FALSE,    AutoDateMappings,    ATTR_PREFS_CAPTURE_AUTOCAPTUREDATE,
  2118.     1,     "CAPTUREFILTER",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_CAPTUREFILTER,
  2119.     1,     "CAPTUREPATH",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_CAPTUREPATH,
  2120.     1,     "CALLLOGFILENAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_CALLLOGFILENAME,
  2121.     1,     "BUFFERSAVEPATH",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_BUFFERSAVEPATH,
  2122.     1,     "OPENBUFFERWINDOW",        INFO_MAPPED,    FALSE,    OpenBufferMappings,    ATTR_PREFS_CAPTURE_OPENBUFFERWINDOW,
  2123.     1,     "OPENBUFFERSCREEN",        INFO_MAPPED,    FALSE,    OpenBufferMappings,    ATTR_PREFS_CAPTURE_OPENBUFFERSCREEN,
  2124.     1,     "BUFFERSCREENPOSITION",    INFO_MAPPED,    FALSE,    BufferPositionMappings,    ATTR_PREFS_CAPTURE_BUFFERSCREENPOSITION,
  2125.     1,     "BUFFERWIDTH",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_BUFFERWIDTH,
  2126.     1,     "REMEMBERBUFFERWINDOW",    INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_REMEMBER_BUFFERWINDOW,
  2127.     1,     "REMEMBERBUFFERSCREEN",    INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_REMEMBER_BUFFERSCREEN,
  2128.     1,     "SEARCHHISTORY",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_SEARCH_HISTORY,
  2129.     1,     "CONVERTCHARACTERS",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_CAPTURE_CONVERTCHARACTERS,
  2130.     1,     "BUFFERMODE",            INFO_MAPPED,    FALSE,    BufferModeMappings,    ATTR_PREFS_CAPTURE_BUFFERMODE,
  2131.  
  2132.     0,    "FILEPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FILE,
  2133.     1,     "TRANSFERPROTOCOLNAME",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FILE_TRANSFERPROTOCOLNAME,
  2134.     1,     "TRANSLATIONFILENAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FILE_TRANSLATIONFILENAME,
  2135.     1,     "MACROFILENAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FILE_MACROFILENAME,
  2136.     1,     "CURSORFILENAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FILE_CURSORFILENAME,
  2137.     1,     "FASTMACROFILENAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FILE_FASTMACROFILENAME,
  2138.  
  2139.     0,    "EMULATIONPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_EMULATION,
  2140.     1,     "IDENTIFICATION",        INFO_MAPPED,    FALSE,    IdentificationMappings,    ATTR_PREFS_EMULATION_IDENTIFICATION,
  2141.     1,     "CURSORMODE",            INFO_MAPPED,    FALSE,    ApplicationMappings,    ATTR_PREFS_EMULATION_CURSORMODE,
  2142.     1,     "NUMERICMODE",            INFO_MAPPED,    FALSE,    ApplicationMappings,    ATTR_PREFS_EMULATION_NUMERICMODE,
  2143.     1,     "CURSORWRAP",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_CURSORWRAP,
  2144.     1,     "LINEWRAP",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_LINEWRAP,
  2145.     1,     "INSERTMODE",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_INSERTMODE,
  2146.     1,     "NEWLINEMODE",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_NEWLINEMODE,
  2147.     1,     "FONTSCALEMODE",        INFO_MAPPED,    FALSE,    FontScaleMappings,    ATTR_PREFS_EMULATION_FONTSCALEMODE,
  2148.     1,     "SCROLLMODE",            INFO_MAPPED,    FALSE,    ScrollMappings,        ATTR_PREFS_EMULATION_SCROLLMODE,
  2149.     1,     "DESTRUCTIVEBACKSPACE",    INFO_MAPPED,    FALSE,    DestructiveBSMappings,    ATTR_PREFS_EMULATION_DESTRUCTIVEBACKSPACE,
  2150.     1,     "SWAPBSDELETE",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_SWAPBSDELETE,
  2151.     1,     "PRINTERENABLED",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_PRINTERENABLED,
  2152.     1,     "ANSWERBACKTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_EMULATION_ANSWERBACKTEXT,
  2153.     1,     "CLSRESETSCURSOR",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_CLS_RESETS_CURSOR,
  2154.     1,     "CURSORLOCKED",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_CURSORLOCKED,
  2155.     1,     "FONTLOCKED",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_FONTLOCKED,
  2156.     1,     "NUMPADLOCKED",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_NUMPADLOCKED,
  2157.     1,     "MAXPRESCROLL",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_EMULATION_MAXSCROLL,
  2158.     1,     "MAXJUMP",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_EMULATION_MAXJUMP,
  2159.     1,     "WRAPLOCKED",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_WRAPLOCKED,
  2160.     1,     "STYLELOCKED",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_STYLELOCKED,
  2161.     1,     "COLOURLOCKED",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_COLOURLOCKED,
  2162.     1,     "USEPENS",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_EMULATION_USEPENS,
  2163.  
  2164.     0,    "TRANSFERPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_TRANSFER,
  2165.     1,     "QUIETTRANSFER",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_QUIET_TRANSFER,
  2166.     1,     "MANGLEFILENAMES",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_MANGLE_FILE_NAMES,
  2167.     1,     "LINEDELAY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_LINEDELAY,
  2168.     1,     "CHARDELAY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_CHARDELAY,
  2169.     1,     "LINEPROMPTTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_LINEPROMPT,
  2170.     1,     "TEXTPACING",            INFO_MAPPED,    FALSE,    PacingMappings,        ATTR_PREFS_TRANSFER_TEXTPACING,
  2171.     1,     "SENDTIMEOUT",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_SENDTIMEOUT,
  2172.     1,     "STRIPBIT8",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_STRIP_BIT_8,
  2173.     1,     "IGNOREDATAPASTTERMINATOR",    INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_IGNORE_DATA_PAST_ARNOLD,
  2174.     1,     "TERMINATORCHAR",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TERMINATOR_CHAR,
  2175.     1,     "ERRORNOTIFYCOUNT",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ERROR_NOTIFY_COUNT,
  2176.     1,     "ERRORNOTIFYWHEN",        INFO_MAPPED,    FALSE,    TransferErrorNotifyMappings,    ATTR_PREFS_TRANSFER_ERROR_NOTIFY_WHEN,
  2177.     1,     "OVERRIDEPATH",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_OVERRIDEPATH,
  2178.     1,     "SETARCHIVEDBIT",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_SETARCHIVEDBIT,
  2179.     1,     "COMMENTMODE",            INFO_MAPPED,    FALSE,    IdentifyMappings,    ATTR_PREFS_TRANSFER_COMMENTMODE,
  2180.     1,     "TRANSFERICONS",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TRANSFERICONS,
  2181.     1,     "HIDEUPLOADICON",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_HIDE_UPLOAD_ICON,
  2182.     1,     "TRANSFERPERFMETER",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TRANSFER_PERFMETER,
  2183.     1,     "DEFAULTLIBRARY",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_DEFAULT_LIBRARY,
  2184.     1,     "DEFAULTPROTOCOL",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_DEFAULT_LIBRARY,
  2185.     1,     "ASCIIUPLOADLIBRARY",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ASCII_UPLOAD_LIBRARY,
  2186.     1,     "ASCIIUPLOADPROTOCOL",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ASCII_UPLOAD_LIBRARY,
  2187.     1,     "ASCIIDOWNLOADLIBRARY",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_LIBRARY,
  2188.     1,     "ASCIIDOWNLOADPROTOCOL",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_LIBRARY,
  2189.     1,     "TEXTUPLOADLIBRARY",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TEXT_UPLOAD_LIBRARY,
  2190.     1,     "TEXTUPLOADPROTOCOL",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TEXT_UPLOAD_LIBRARY,
  2191.     1,     "TEXTDOWNLOADLIBRARY",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_LIBRARY,
  2192.     1,     "TEXTDOWNLOADPROTOCOL",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_LIBRARY,
  2193.     1,     "BINARYUPLOADLIBRARY",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_BINARY_UPLOAD_LIBRARY,
  2194.     1,     "BINARYUPLOADPROTOCOL",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_BINARY_UPLOAD_LIBRARY,
  2195.     1,     "BINARYDOWNLOADLIBRARY",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_LIBRARY,
  2196.     1,     "BINARYDOWNLOADPROTOCOL",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_LIBRARY,
  2197.     1,     "DEFAULTTYPE",            INFO_MAPPED,    FALSE,    TransferMappings1,    ATTR_PREFS_TRANSFER_DEFAULT_TYPE,
  2198.     1,     "DEFAULTSENDSIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_DEFAULT_SEND_SIGNATURE,
  2199.     1,     "DEFAULTRECEIVESIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_DEFAULT_RECEIVE_SIGNATURE,
  2200.     1,     "ASCIIUPLOADTYPE",        INFO_MAPPED,    FALSE,    TransferMappings3,    ATTR_PREFS_TRANSFER_ASCII_UPLOAD_TYPE,
  2201.     1,     "ASCIIUPLOADSIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ASCII_UPLOAD_SIGNATURE,
  2202.     1,     "ASCIIDOWNLOADTYPE",        INFO_MAPPED,    FALSE,    TransferMappings3,    ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_TYPE,
  2203.     1,     "ASCIIDOWNLOADSIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_ASCII_DOWNLOAD_SIGNATURE,
  2204.     1,     "TEXTUPLOADTYPE",        INFO_MAPPED,    FALSE,    TransferMappings2,    ATTR_PREFS_TRANSFER_TEXT_UPLOAD_TYPE,
  2205.     1,     "TEXTUPLOADSIGNATURE",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TEXT_UPLOAD_SIGNATURE,
  2206.     1,     "TEXTDOWNLOADTYPE",        INFO_MAPPED,    FALSE,    TransferMappings2,    ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_TYPE,
  2207.     1,     "TEXTDOWNLOADSIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_TEXT_DOWNLOAD_SIGNATURE,
  2208.     1,     "BINARYUPLOADTYPE",        INFO_MAPPED,    FALSE,    TransferMappings2,    ATTR_PREFS_TRANSFER_BINARY_UPLOAD_TYPE,
  2209.     1,     "BINARYUPLOADSIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_BINARY_UPLOAD_SIGNATURE,
  2210.     1,     "BINARYDOWNLOADTYPE",        INFO_MAPPED,    FALSE,    TransferMappings2,    ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_TYPE,
  2211.     1,     "BINARYDOWNLOADSIGNATURE",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSFER_BINARY_DOWNLOAD_SIGNATURE,
  2212.  
  2213.     0,    "SPEECHPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_SPEECH,
  2214.     1,     "RATE",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SPEECH_RATE,
  2215.     1,     "PITCH",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SPEECH_PITCH,
  2216.     1,     "FREQUENCY",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SPEECH_FREQUENCY,
  2217.     1,     "SEXMODE",            INFO_MAPPED,    FALSE,    SexMappings,        ATTR_PREFS_SPEECH_SEXMODE,
  2218.     1,     "VOLUME",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SPEECH_VOLUME,
  2219.     1,     "SPEECH",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SPEECH_SPEECH,
  2220.  
  2221.     0,    "TRANSLATIONPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_TRANSLATIONS,
  2222.     1,     NULL,                INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_TRANSLATIONS_X,
  2223.     2,     "SEND",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSLATIONS_X_SEND,
  2224.     2,     "RECEIVE",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_TRANSLATIONS_X_RECEIVE,
  2225.  
  2226.     0,    "FASTMACROPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FASTMACROS,
  2227.     1,     "COUNT",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_FASTMACROS_COUNT,
  2228.     1,      NULL,                INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FASTMACROS_X,
  2229.     2,      "NAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FASTMACROS_X_NAME,
  2230.     2,      "CODE",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FASTMACROS_X_CODE,
  2231.  
  2232.     0,    "HOTKEYPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS,
  2233.     1,     "TERMSCREENTOFRONTTEXT",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS_TERMSCREENTOFRONTTEXT,
  2234.     1,     "BUFFERSCREENTOFRONTTEXT",    INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS_BUFFERSCREENTOFRONTTEXT,
  2235.     1,     "SKIPDIALENTRYTEXT",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS_SKIPDIALENTRYTEXT,
  2236.     1,     "ABORTAREXX",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS_ABORTAREXX,
  2237.     1,     "COMMODITYPRIORITY",        INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS_COMMODITYPRIORITY,
  2238.     1,     "HOTKEYSENABLED",        INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_HOTKEYS_HOTKEYSENABLED,
  2239.  
  2240.     0,    "CURSORKEYPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS,
  2241.     1,     "UPTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_UPTEXT,
  2242.     1,     "RIGHTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_RIGHTTEXT,
  2243.     1,     "DOWNTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_DOWNTEXT,
  2244.     1,     "LEFTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_LEFTTEXT,
  2245.  
  2246.     1,     "SHIFT",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_SHIFT,
  2247.     2,      "UPTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_SHIFT_UPTEXT,
  2248.     2,      "RIGHTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_SHIFT_RIGHTTEXT,
  2249.     2,      "DOWNTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_SHIFT_DOWNTEXT,
  2250.     2,      "LEFTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_SHIFT_LEFTTEXT,
  2251.  
  2252.     1,     "ALT",                INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_ALT,
  2253.     2,      "UPTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_ALT_UPTEXT,
  2254.     2,      "RIGHTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_ALT_RIGHTTEXT,
  2255.     2,      "DOWNTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_ALT_DOWNTEXT,
  2256.     2,      "LEFTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_ALT_LEFTTEXT,
  2257.  
  2258.     1,     "CONTROL",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_CONTROL,
  2259.     2,      "UPTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_CONTROL_UPTEXT,
  2260.     2,      "RIGHTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_CONTROL_RIGHTTEXT,
  2261.     2,      "DOWNTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_CONTROL_DOWNTEXT,
  2262.     2,      "LEFTTEXT",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CURSORKEYS_CONTROL_LEFTTEXT,
  2263.  
  2264.     0,    "FUNCTIONKEYPREFS",        INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS,
  2265.     1,      NULL,                INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_X,
  2266.     1,     "SHIFT",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_SHIFT,
  2267.     2,       NULL,            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_SHIFT_X,
  2268.     1,     "ALT",                INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_ALT,
  2269.     2,       NULL,            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_ALT_X,
  2270.     1,     "CONTROL",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_CONTROL,
  2271.     2,       NULL,            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_FUNCTIONKEYS_CONTROL_X,
  2272.  
  2273.     0,    "PROTOCOLPREFS",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_PROTOCOL,
  2274.  
  2275.     0,    "CONSOLEPREFS",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_CONSOLE,
  2276.  
  2277.     0,    "SOUNDPREFS",            INFO_STEM,    FALSE,    NULL,            ATTR_PREFS_SOUND,
  2278.     1,     "BELLNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_BELLNAME,
  2279.     1,     "CONNECTNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_CONNECTNAME,
  2280.     1,     "DISCONNECTNAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_DISCONNECTNAME,
  2281.     1,     "GOODTRANSFERNAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_GOODTRANSFERNAME,
  2282.     1,     "BADTRANSFERNAME",        INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_BADTRANSFERNAME,
  2283.     1,     "RINGNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_RINGNAME,
  2284.     1,     "VOICENAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_VOICENAME,
  2285.     1,     "ERRORNAME",            INFO_TEXT,    FALSE,    NULL,            ATTR_PREFS_SOUND_ERROR,
  2286.     1,     "PRELOAD",            INFO_BOOLEAN,    FALSE,    NULL,            ATTR_PREFS_SOUND_PRELOAD,
  2287.     1,     "VOLUME",            INFO_NUMERIC,    FALSE,    NULL,            ATTR_PREFS_SOUND_VOLUME,
  2288.  
  2289.     0,    "PHONEBOOK",            INFO_STEM,    TRUE,    NULL,            ATTR_PHONEBOOK,
  2290.  
  2291.     1,     "COUNT",            INFO_NUMERIC,    TRUE,    NULL,            ATTR_PHONEBOOK_COUNT,
  2292.     1,      NULL,                INFO_STEM,    TRUE,    NULL,            ATTR_PHONEBOOK_X,
  2293.     2,      "NAME",            INFO_TEXT,    TRUE,    NULL,            ATTR_PHONEBOOK_X_NAME,
  2294.     2,      "NUMBER",            INFO_TEXT,    TRUE,    NULL,            ATTR_PHONEBOOK_X_NUMBER,
  2295.     2,      "COMMENTTEXT",        INFO_TEXT,    TRUE,    NULL,            ATTR_PHONEBOOK_X_COMMENTTEXT,
  2296.     2,      "USERNAME",            INFO_TEXT,    TRUE,    NULL,            ATTR_PHONEBOOK_X_USERNAME,
  2297.     2,      "PASSWORDTEXT",        INFO_TEXT,    TRUE,    NULL,            ATTR_PHONEBOOK_X_PASSWORDTEXT
  2298. };
  2299.  
  2300. WORD AttributeTableSize = NumElements(AttributeTable);
  2301.  
  2302.     /* Information on arguments to exclude each other.*/
  2303.  
  2304. STATIC struct ExclusionInfo ExclusionInfoTable_00[] =
  2305. {
  2306.     1,2, 5,6, -1,-1
  2307. };
  2308.  
  2309. STATIC struct ExclusionInfo ExclusionInfoTable_01[] =
  2310. {
  2311.     0,1, -1,-1
  2312. };
  2313.  
  2314. STATIC struct ExclusionInfo ExclusionInfoTable_02[] =
  2315. {
  2316.     2,3, -1,-1
  2317. };
  2318.  
  2319. STATIC struct ExclusionInfo ExclusionInfoTable_03[] =
  2320. {
  2321.     0,1, 0,2, 0,3, 0,4, 1,2, 1,3, 1,4, 2,3, 2,4, 3,4, -1,-1
  2322. };
  2323.  
  2324. STATIC struct ExclusionInfo ExclusionInfoTable_04[] =
  2325. {
  2326.     0,1, 0,2, 1,2, -1,-1
  2327. };
  2328.  
  2329. STATIC struct ExclusionInfo ExclusionInfoTable_05[] =
  2330. {
  2331.     0,2, 0,3, 0,4, 0,5, 2,3, 2,4, 2,5, 3,4, 3,5, 4,5, -1,-1
  2332. };
  2333.  
  2334. STATIC struct ExclusionInfo ExclusionInfoTable_06[] =
  2335. {
  2336.     2,3, -1,-1
  2337. };
  2338.  
  2339. STATIC struct ExclusionInfo ExclusionInfoTable_07[] =
  2340. {
  2341.     0,1, -1,-1
  2342. };
  2343.  
  2344. STATIC struct ExclusionInfo ExclusionInfoTable_08[] =
  2345. {
  2346.     0,1, -1,-1
  2347. };
  2348.  
  2349. STATIC struct ExclusionInfo ExclusionInfoTable_09[] =
  2350. {
  2351.     0,1, -1,-1
  2352. };
  2353.  
  2354. STATIC struct ExclusionInfo ExclusionInfoTable_10[] =
  2355. {
  2356.     1,2, 2,3, 2,4, 2,5, 2,6, 2,7, 2,8, 2,9, 2,10, 2,11, 4,5, 6,7, 8,9, 8,10, 8,11, 9,10, 9,11, 10,11, -1,-1
  2357. };
  2358.  
  2359.     /* This is where the information on what arguments exclude
  2360.      * other arguments is linked to the actual commands.
  2361.      */
  2362.  
  2363. struct ExclusionInfo *ExclusionTable[] =
  2364. {
  2365.     /* ACTIVATE */        NULL,
  2366.     /* ADD */        ExclusionInfoTable_00,
  2367.     /* BAUD */        NULL,
  2368.     /* BEEPSCREEN */    NULL,
  2369.     /* CALLMENU */        NULL,
  2370.     /* CAPTURE */        NULL,
  2371.     /* CLEAR */        NULL,
  2372.     /* CLEARSCREEN */    NULL,
  2373.     /* CLOSE */        NULL,
  2374.     /* CLOSEDEVICE */    NULL,
  2375.     /* CLOSEREQUESTER */    NULL,
  2376.     /* DEACTIVATE */    NULL,
  2377.     /* DELAY */        NULL,
  2378.     /* DIAL */        NULL,
  2379.     /* DUPLEX */        ExclusionInfoTable_01,
  2380.     /* EXECTOOL */        NULL,
  2381.     /* FAULT */        NULL,
  2382.     /* GETATTR */        ExclusionInfoTable_02,
  2383.     /* GETCLIP */        NULL,
  2384.     /* GOONLINE */        NULL,
  2385.     /* HANGUP */        NULL,
  2386.     /* HELP */        NULL,
  2387.     /* OPEN */        NULL,
  2388.     /* OPENDEVICE */    NULL,
  2389.     /* OPENREQUESTER */    NULL,
  2390.     /* PARITY */        ExclusionInfoTable_03,
  2391.     /* PASTECLIP */        NULL,
  2392.     /* PRINT */        NULL,
  2393.     /* PROTOCOL */        ExclusionInfoTable_04,
  2394.     /* PROCESSIO */        ExclusionInfoTable_09,
  2395.     /* PUTCLIP */        NULL,
  2396.     /* QUIT */        NULL,
  2397.     /* READ */        NULL,
  2398.     /* RECEIVEFILE */    NULL,
  2399.     /* REDIAL */        NULL,
  2400.     /* REMOVE */        NULL,
  2401.     /* REQUESTFILE */    NULL,
  2402.     /* REQUESTNOTIFY */    NULL,
  2403.     /* REQUESTNUMBER */    NULL,
  2404.     /* REQUESTRESPONSE */    NULL,
  2405.     /* REQUESTSTRING */    NULL,
  2406.     /* RESETSCREEN */    NULL,
  2407.     /* RESETSTYLES */    NULL,
  2408.     /* RESETTEXT */        NULL,
  2409.     /* RESETTIMER */    NULL,
  2410.     /* RX */        NULL,
  2411.     /* SAVE */        NULL,
  2412.     /* SAVEAS */        NULL,
  2413.     /* SELECTITEM */    ExclusionInfoTable_05,
  2414.     /* SEND */        NULL,
  2415.     /* SENDBREAK */        NULL,
  2416.     /* SENDFILE */        NULL,
  2417.     /* SETATTR */        ExclusionInfoTable_06,
  2418.     /* SPEAK */        NULL,
  2419.     /* STOPBITS */        ExclusionInfoTable_07,
  2420.     /* TEXTBUFFER */    ExclusionInfoTable_08,
  2421.     /* TIMEOUT */        ExclusionInfoTable_09,
  2422.     /* TRAP */        ExclusionInfoTable_09,
  2423.     /* WAIT */        NULL,
  2424.     /* WINDOW */        ExclusionInfoTable_10,
  2425. };
  2426.  
  2427.     /* This is where the information on which arguments (switches and keywords)
  2428.      * are actually required is stored.
  2429.      */
  2430.  
  2431. UWORD InclusionTable[] =
  2432. {
  2433.     /* ACTIVATE */        NULL,
  2434.     /* ADD */        INCLUDE_05|INCLUDE_06,
  2435.     /* BAUD */        NULL,
  2436.     /* BEEPSCREEN */    NULL,
  2437.     /* CALLMENU */        NULL,
  2438.     /* CAPTURE */        NULL,
  2439.     /* CLEAR */        NULL,
  2440.     /* CLEARSCREEN */    NULL,
  2441.     /* CLOSE */        NULL,
  2442.     /* CLOSEDEVICE */    NULL,
  2443.     /* CLOSEREQUESTER */    NULL,
  2444.     /* DEACTIVATE */    NULL,
  2445.     /* DELAY */        INCLUDE_00|INCLUDE_01|INCLUDE_02,
  2446.     /* DIAL */        NULL,
  2447.     /* DUPLEX */        INCLUDE_00|INCLUDE_01,
  2448.     /* EXECTOOL */        NULL,
  2449.     /* FAULT */        NULL,
  2450.     /* GETATTR */        NULL,
  2451.     /* GETCLIP */        NULL,
  2452.     /* GOONLINE */        NULL,
  2453.     /* HANGUP */        NULL,
  2454.     /* HELP */        INCLUDE_00|INCLUDE_01,
  2455.     /* OPEN */        NULL,
  2456.     /* OPENDEVICE */    NULL,
  2457.     /* OPENREQUESTER */    NULL,
  2458.     /* PARITY */        INCLUDE_00|INCLUDE_01|INCLUDE_02|INCLUDE_03|INCLUDE_04,
  2459.     /* PASTECLIP */        NULL,
  2460.     /* PRINT */        NULL,
  2461.     /* PROTOCOL */        INCLUDE_00|INCLUDE_01|INCLUDE_02,
  2462.     /* PROCESSIO */        INCLUDE_00|INCLUDE_01,
  2463.     /* PUTCLIP */        NULL,
  2464.     /* QUIT */        NULL,
  2465.     /* READ */        INCLUDE_00|INCLUDE_01,
  2466.     /* RECEIVEFILE */    NULL,
  2467.     /* REDIAL */        NULL,
  2468.     /* REMOVE */        NULL,
  2469.     /* REQUESTFILE */    NULL,
  2470.     /* REQUESTNOTIFY */    NULL,
  2471.     /* REQUESTNUMBER */    NULL,
  2472.     /* REQUESTRESPONSE */    NULL,
  2473.     /* REQUESTSTRING */    NULL,
  2474.     /* RESETSCREEN */    NULL,
  2475.     /* RESETSTYLES */    NULL,
  2476.     /* RESETTEXT */        NULL,
  2477.     /* RESETTIMER */    NULL,
  2478.     /* RX */        NULL,
  2479.     /* SAVE */        NULL,
  2480.     /* SAVEAS */        INCLUDE_00|INCLUDE_02|INCLUDE_03|INCLUDE_04|INCLUDE_05,
  2481.     /* SELECTITEM */    NULL,
  2482.     /* SEND */        INCLUDE_03|INCLUDE_04,
  2483.     /* SENDBREAK */        NULL,
  2484.     /* SENDFILE */        NULL,
  2485.     /* SETATTR */        INCLUDE_02|INCLUDE_03,
  2486.     /* SPEAK */        NULL,
  2487.     /* STOPBITS */        INCLUDE_00|INCLUDE_01,
  2488.     /* TEXTBUFFER */    INCLUDE_00|INCLUDE_01,
  2489.     /* TIMEOUT */        INCLUDE_00|INCLUDE_01,
  2490.     /* TRAP */        INCLUDE_00|INCLUDE_01,
  2491.     /* WAIT */        NULL,
  2492.     /* WINDOW */        INCLUDE_01|INCLUDE_02|INCLUDE_03|INCLUDE_04|INCLUDE_05|INCLUDE_06|INCLUDE_07|INCLUDE_08|INCLUDE_09|INCLUDE_10|INCLUDE_11,
  2493. };
  2494.  
  2495.     /* This is where command names, arguments and the routines
  2496.      * to execute the actual commands are linked together.
  2497.      */
  2498.  
  2499. struct CommandInfo CommandTable[] =
  2500. {
  2501.     TRUE,    FALSE,    FALSE,    RexxActivate,        "ACTIVATE",         NULL,
  2502.     TRUE,    FALSE,    FALSE,    RexxAdd,        "ADDITEM",        "TO/A,BEFORE/S,AFTER/S,RESPONSE/K,COMMAND/K,PHONE/K/F,NAME/K/F",
  2503.     FALSE,    FALSE,    FALSE,    RexxBaud,        "BAUD",            "RATE/A/N",
  2504.     FALSE,    FALSE,    FALSE,    RexxBeepScreen,        "BEEPSCREEN",         NULL,
  2505.     FALSE,    FALSE,    FALSE,    RexxCallMenu,        "CALLMENU",        "TITLE/A/F",
  2506.     FALSE,    FALSE,    FALSE,    RexxCapture,        "CAPTURE",        "TO/A,NAME/K",
  2507.     FALSE,    FALSE,    FALSE,    RexxClear,        "CLEAR",        "FROM/A,FORCE/S",
  2508.     FALSE,    FALSE,    FALSE,    RexxClearScreen,    "CLEARSCREEN",         NULL,
  2509.     FALSE,    FALSE,    FALSE,    RexxClose,        "CLOSE",        "FROM/A",
  2510.     FALSE,    FALSE,    FALSE,    RexxCloseDevice,    "CLOSEDEVICE",         NULL,
  2511.     TRUE,    FALSE,    FALSE,    RexxCloseRequester,    "CLOSEREQUESTER",     NULL,
  2512.     TRUE,    FALSE,    FALSE,    RexxDeactivate,        "DEACTIVATE",         NULL,
  2513.     FALSE,    FALSE,    FALSE,    RexxDelay,        "DELAY",        "MIC=MICROSECONDS/K/N,SEC=SECONDS/N,MIN=MINUTES/K/N,QUIET/S",
  2514.     FALSE,    FALSE,    FALSE,    RexxDial,        "DIAL",            "WAIT=SYNC/S,NUM/F",
  2515.     FALSE,    FALSE,    FALSE,    RexxDuplex,        "DUPLEX",        "FULL/S,HALF=ECHO/S",
  2516.     TRUE,    TRUE,    TRUE,    RexxExecTool,        "EXECTOOL",        "CONSOLE/S,ASYNC/S,PORT/S,COMMAND/A/F",
  2517.     TRUE,    FALSE,    FALSE,    RexxFault,        "FAULT",        "CODE/A/N",
  2518.     TRUE,    FALSE,    FALSE,    RexxGetAttr,        "GETATTR",        "OBJECT/A,FIELD,STEM/K,VAR/K",
  2519.     FALSE,    FALSE,    FALSE,    RexxGetClip,        "GETCLIP",        "UNIT/K/N",
  2520.     FALSE,    FALSE,    FALSE,    RexxGoOnline,        "GOONLINE",         NULL,
  2521.     FALSE,    FALSE,    FALSE,    RexxHangup,        "HANGUP",         NULL,
  2522.     TRUE,    FALSE,    FALSE,    RexxHelp,        "HELP",            "COMMAND,PROMPT/S",
  2523.     FALSE,    FALSE,    FALSE,    RexxOpen,        "OPEN",            "NAME/K,TO/A",
  2524.     FALSE,    FALSE,    FALSE,    RexxOpenDevice,        "OPENDEVICE",        "NAME/K,UNIT/K/N",
  2525.     FALSE,    FALSE,    FALSE,    RexxOpenRequester,    "OPENREQUESTER",    "REQUESTER/A",
  2526.     FALSE,    FALSE,    FALSE,    RexxParity,        "PARITY",        "EVEN/S,ODD/S,NONE/S,MARK/S,SPACE/S",
  2527.     TRUE,    FALSE,    FALSE,    RexxPasteClip,        "PASTECLIP",        "UNIT/K/N",
  2528.     FALSE,    FALSE,    FALSE,    RexxPrint,        "PRINT",        "FROM/A,TO/K,SERIAL/S,MODEM/S,SCREEN/S,TERMINAL/S,USER/S,COMMENT/S,SIZE/S,DATE/S,ATTR/S",
  2529.     FALSE,    FALSE,    FALSE,    RexxProtocol,        "PROTOCOL",        "NONE/S,RTSCTS/S,RTSCTSDTR/S",
  2530.     FALSE,    FALSE,    FALSE,    RexxProcessIO,        "PROCESSIO",        "ON/S,OFF/S",
  2531.     FALSE,    FALSE,    FALSE,    RexxPutClip,        "PUTCLIP",        "UNIT/K/N,TEXT/A/F",
  2532.     TRUE,    FALSE,    FALSE,    RexxQuit,        "QUIT",            "FORCE/S",
  2533.     FALSE,    FALSE,    FALSE,    RexxRead,        "READ",            "NUM/K/N,CR/S,NOECHO/S,VERBATIM/S,PROMPT/K/F",
  2534.     FALSE,    FALSE,    FALSE,    RexxReceiveFile,    "RECEIVEFILE",        "MODE/K,NAME/K",
  2535.     FALSE,    FALSE,    FALSE,    RexxRedial,        "REDIAL",         NULL,
  2536.     TRUE,    FALSE,    FALSE,    RexxRemove,        "REMITEM",        "FROM/A,NAME/K/F",
  2537.     FALSE,    FALSE,    FALSE,    RexxRequestFile,    "REQUESTFILE",        "TITLE/K,PATH/K,FILE/K,PATTERN/K,MULTI/S,STEM=NAME/K",
  2538.     FALSE,    FALSE,    FALSE,    RexxRequestNotify,    "REQUESTNOTIFY",    "TITLE/K,PROMPT/A/F",
  2539.     FALSE,    FALSE,    FALSE,    RexxRequestNumber,    "REQUESTNUMBER",    "DEFAULT/K/N,PROMPT/K/F",
  2540.     FALSE,    FALSE,    FALSE,    RexxRequestResponse,    "REQUESTRESPONSE",    "TITLE/K,OPTIONS/K,PROMPT/A/F",
  2541.     FALSE,    FALSE,    FALSE,    RexxRequestString,    "REQUESTSTRING",    "SECRET/S,DEFAULT/K,PROMPT/K/F",
  2542.     FALSE,    FALSE,    FALSE,    RexxResetScreen,    "RESETSCREEN",         NULL,
  2543.     FALSE,    FALSE,    FALSE,    RexxResetStyles,    "RESETSTYLES",         NULL,
  2544.     FALSE,    FALSE,    FALSE,    RexxResetText,        "RESETTEXT",         NULL,
  2545.     FALSE,    FALSE,    FALSE,    RexxResetTimer,        "RESETTIMER",         NULL,
  2546.     TRUE,    TRUE,    TRUE,    RexxRX,            "RX",            "CONSOLE/S,ASYNC/S,COMMAND/A/F",
  2547.     FALSE,    FALSE,    FALSE,    RexxSave,        "SAVE",            "FROM/A",
  2548.     FALSE,    FALSE,    FALSE,    RexxSaveAs,        "SAVEAS",        "NAME/K,FROM/A",
  2549.     TRUE,    FALSE,    FALSE,    RexxSelect,        "SELECTITEM",        "NAME/K,FROM/A,NEXT/S,PREV=PREVIOUS/S,TOP/S,BOTTOM/S",
  2550.     FALSE,    FALSE,    FALSE,    RexxSend,        "SEND",            "NOECHO/S,LOCAL/S,LITERAL/S,BYTE/K/N,TEXT/F",
  2551.     FALSE,    FALSE,    FALSE,    RexxSendBreak,        "SENDBREAK",         NULL,
  2552.     FALSE,    FALSE,    FALSE,    RexxSendFile,        "SENDFILE",        "MODE/K,NAMES/M",
  2553.     FALSE,    FALSE,    FALSE,    RexxSetAttr,        "SETATTR",        "OBJECT/A,FIELD,STEM/K,VAR",
  2554.     TRUE,    FALSE,    FALSE,    RexxSpeak,        "SPEAK",        "TEXT/A/F",
  2555.     FALSE,    FALSE,    FALSE,    RexxStopBits,        "STOPBITS",        "0/S,1/S",
  2556.     FALSE,    FALSE,    FALSE,    RexxTextBuffer,        "TEXTBUFFER",        "LOCK/S,UNLOCK/S",
  2557.     FALSE,    FALSE,    FALSE,    RexxTimeout,        "TIMEOUT",        "SEC=SECONDS/N,OFF/S",
  2558.     FALSE,    FALSE,    FALSE,    RexxTrap,        "TRAP",            "ON/S,OFF/S",
  2559.     FALSE,    FALSE,    FALSE,    RexxWait,        "WAIT",            "NOECHO/S,TEXT/F",
  2560.     FALSE,    FALSE,    FALSE,    RexxWindow,        "WINDOW",        "NAMES/A/M,OPEN/S,CLOSE/S,ACTIVATE/S,MIN/S,MAX/S,FRONT/S,BACK/S,TOP/S,BOTTOM/S,UP/S,DOWN/S",
  2561. };
  2562.  
  2563. WORD CommandTableSize = NumElements(CommandTable);
  2564.  
  2565. struct MsgPort        *RexxPort;
  2566. LONG             LastRexxError;
  2567. LONG             RexxTimeoutVal;
  2568. BOOLEAN             UpdateRequired,TransferUpdateRequired;
  2569.  
  2570. LONG             RexxLaunchCount;
  2571. struct SignalSemaphore     RexxLaunchSemaphore;
  2572.